Mesh network addressing

ABSTRACT

In embodiments of mesh network addressing, a router device receives provisioning domains that include an address prefix and an associated preference value for the address prefix. The router determines a route, based on one of the address prefixes, to use to forward a data packet to a destination. The router uses the preference values to prioritize the routing of the data packet. In other aspects, the preference values can be set based on one or more factors, and the router can use the preference values in addition to mesh network routing costs to determine a route for a data packet.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims priority under 35 U.S.C. §119(e) to U.S.Provisional Patent Application Ser. No. 62/111,510 filed Feb. 3, 2015,the disclosure of which is incorporated by reference herein in itsentirety. This application also claims priority under 35 U.S.C. §119(e)to U.S. Provisional Patent Application Ser. No. 62/131,188 filed Mar.10, 2015, the disclosure of which is incorporated by reference herein inits entirety.

BACKGROUND

Using wireless mesh networking to connect devices to each other, and tocloud-based services, is increasingly popular for sensing environmentalconditions, controlling equipment, and providing information and alertsto users. However many devices on mesh networks are designed to operatefor extended periods of time on battery-power, which limits theavailable computing, user interface, and radio resources in the devices.Additionally, some mesh network devices may sleep periodically to reducepower consumption and are not in constant radio contact with the meshnetwork to receive data packets. However, with the increasing ubiquityand interconnectedness of mesh networks, network addressing techniqueslimit the efficiency, flexibility, and redundancy of routing datapackets within mesh networks and between mesh network devices andexternal network devices and services.

SUMMARY

This summary is provided to introduce simplified concepts of meshnetwork addressing, generally related to addressing and routing. Thesimplified concepts are further described below in the DetailedDescription. This summary is not intended to identify essential featuresof the claimed subject matter, nor is it intended for use in determiningthe scope of the claimed subject matter.

Mesh network addressing, generally related to addressing and routingpackets in a mesh network, is described. In embodiments, a border routerreceives an address prefix and associated configuration information froman external network. The received address prefix and the configurationinformation enable the border router to create a provisioning domainthat includes the received address prefix and the configurationinformation, as well as a unique identifier. The border router forwardsthe created provisioning domain to a leader device in the mesh networkthat stores the provisioning domain and propagates the provisioningdomain, as well as any other provisioning domains, as a part of networkdata for the mesh network. The provisioning domains enable routers, enddevices, or hosts in the mesh network to select routes for addressingpackets to destination addresses. In implementations, the provisioningdomain includes a Routing Locator (RLOC) for the border router to enablethe routers to forward packets to the external network using the borderrouter.

Mesh network addressing, generally related to addressing and routingpackets in a mesh network, is described. In embodiments, a router canreceive a packet to deliver to a network destination and determine ifthe network destination is within the mesh network. The networkdestination enables the router to discover a Routing Locator (RLOC) thatis associated with the network destination and that provides a routablenetwork address for the network destination. The router forwards thereceived packet using the routable network address from the discoveredRouting Locator. In implementations, the router can discover the RLOC invarious manners including searching a cache of RLOCs stored in therouter, or by sending an address query over the mesh network.

Mesh network addressing, generally related to addressing and routingpackets in a mesh network, is described. In embodiments, a routerregisters an address for an end device and assigns a child identifier tothe end device. The router can encode an Endpoint Identifier (EID) ofthe end device, and a router identifier of the router into the EndpointIdentifier, which the router incorporates into a Routing Locator (RLOC)for the end device. The router receives an address query for the enddevice, over the mesh network, and responds to the address query onbehalf of the end device, with a response that includes the RLOC for theend device. The router can receive data packets on behalf of the enddevice and store the data packets for the end device until the routercan forward the data packets to the end device.

Mesh network addressing, generally related to addressing and routingpackets, is described. In embodiments, a router device receivesprovisioning domains, which each include an address prefix and anassociated preference value for the address prefix. The router candetermine a route, based on one of the address prefixes, to use toforward a data packet to a destination. The router can use thepreference values to prioritize the routing of the data packet. In otheraspects, the preference values can be set based on one or more factors,and the router can use the preference values in addition to mesh networkrouting costs to determine a route for a data packet.

Mesh network addressing as generally related to duplicate addressdetection in a mesh network, is described. In embodiments, an end deviceof the mesh network can generate an address identifier that includes anaddress and time-based information associated with the end device, whichis attached to a router device for communication in the mesh network.The address identifier may also include a random value generated by theend device. The address identifier is maintained by the router device asa tuple state of the end device. The end device or the router device caninitiate an address query requesting that mesh network devices in themesh network having a designated address respond with the tuple statethat corresponds to the designated address. The end device or routerdevice receives the tuple state of mesh network devices having thedesignated address in response to the address query. The end device orthe router device can then compare the time-based information in thetuple states of the mesh network devices to the time-based informationin the tuple state of the end device and detect a duplicate address of amesh network device based on the time-based information. The end deviceor the router device can then direct one or more of the mesh networkdevices that have the duplicate address to generate a new address.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments of mesh network addressing are described with reference tothe following drawings. The same numbers are used throughout thedrawings to reference like features and components:

FIG. 1 illustrates an example mesh network system in which variousembodiments of mesh network addressing can be implemented.

FIG. 2 illustrates an example environment in which various embodimentsof mesh network addressing can be implemented.

FIG. 3 illustrates an example environment in which various embodimentsof mesh network addressing techniques can be implemented.

FIG. 4 further illustrates an example environment 400 in which variousembodiments of mesh network addressing techniques can be implemented.

FIG. 5 illustrates an example mesh network system in which variousembodiments of mesh network addressing as generally related to duplicateaddress detection can be implemented.

FIG. 6 further illustrates the example of duplicate address detection inthe example mesh network system in accordance with various embodimentsof mesh network addressing.

FIG. 7 further illustrates the example of duplicate address detection inthe example mesh network system in accordance with various embodimentsof mesh network addressing.

FIG. 8 further illustrates the example of duplicate address detection inthe example mesh network system in accordance with various embodimentsof mesh network addressing.

FIG. 9 further illustrates the example of duplicate address detection inthe example mesh network system in accordance with various embodimentsof mesh network addressing.

FIG. 10 illustrates an example method of mesh network addressing asgenerally related to provisioning domains in a mesh network inaccordance with embodiments of the techniques described herein.

FIG. 11 illustrates another example method of mesh network addressing asgenerally related to addressing architecture in a mesh network inaccordance with embodiments of the techniques described herein.

FIG. 12 illustrates an example method of mesh network addressing asgenerally related to end devices in a mesh network in accordance withembodiments of the techniques described herein.

FIG. 13 illustrates another example method of mesh network addressing asgenerally related to prioritized routing in a mesh network in accordancewith embodiments of the techniques described herein.

FIG. 14 illustrates an example method of mesh network addressing asgenerally related to duplicate address detection in a mesh network inaccordance with embodiments of the techniques described herein.

FIG. 15 illustrates an example environment in which a mesh network canbe implemented in accordance with embodiments of the techniquesdescribed herein.

FIG. 16 illustrates an example mesh network device that can beimplemented in a mesh network environment in accordance with one or moreembodiments of the techniques described herein.

FIG. 17 illustrates an example system with an example device that canimplement embodiments of mesh network addressing.

DETAILED DESCRIPTION

Wireless mesh networks are communication networks having wireless nodesconnected in a mesh topology that provides reliable and redundantcommunication paths for traffic within a mesh network. Wireless meshnetworks use multiple radio links, or hops, to forward traffic betweendevices within the mesh network. This provides coverage for areas largerthan the area covered by a single radio link.

Wireless mesh networks can be based on proprietary technologies, orstandards-based technologies. For example, wireless mesh networks may bebased on the IEEE 802.15.4 standard, which defines physical (PHY) layerand Media Access Control (MAC) layer features and services for use byapplications at higher layers of a mesh networking stack. Upper-layerapplications rely on these standards-defined services to supportaddressing and routing of packet data to support application-levelcommunication across a mesh network and between the mesh network andexternal networks.

While many standards-based technologies have been developed foraddressing and routing of data packets in networks, such as InternetProtocol (IP) networks, these technologies do not provide completesolutions for addressing and routing packets for mesh networks. Forexample, a mesh network may be connected to multiple external networks,which each provide different sets of network configuration data that canbe used by mesh network devices to address and route data packets.However, the mesh network device is left to decide which set of networkconfiguration data to use, or how to merge the different, potentiallyconflicting, items of configuration information from the different setsof network configuration data to address data packets.

Establishing provisioning domains to identify, store, and propagatenetwork configuration data for the mesh network provides consistentmanagement of network configuration data for different externalnetworks. When the mesh network device uses network configuration datafrom a given provisioning domain, inconsistent or conflicting use (e.g.,from mixing network configuration data) is prevented. Variousembodiments provide mesh network addressing techniques to improve themanagement and use of network configuration data.

Addressing and routing techniques for a mesh network may create routinginefficiencies and may create a single point of failure for the meshnetwork. For example, a border router that connects the mesh network toan external network of an Internet Service Provider (ISP) may receive anaddress prefix and associated network configuration data from the ISP. ADynamic Host Configuration Protocol (DHCP) server in the border routermaps mesh network device addresses to network addresses for routing,using the address prefix supplied by the ISP.

When network address lookups in the mesh network go through the DHCPserver, routing inefficiencies are created and the DHCP server becomes apotential single point of failure for the mesh network. Also, requiringa DHCP server to configure IPv6 addresses creates a potential singlepoint of failure for the mesh network. If the DHCP server fails, meshnetwork devices cannot obtain IPv6 addresses. Mesh network addressingtechniques are described that provide on-mesh global addressing for datapackets without the need for a centralized service to determinedestination addresses for data packets within, and outside, the meshnetwork.

Many devices for mesh networks, such as sensors, are designed forlow-power, battery operation over long periods of time, such as monthsor years. To achieve long service life, a battery-powered mesh devicemay turn off, or sleep, many functions, such as radio and networkinterfaces, for periods of time. During sleep periods, the mesh deviceis not available on the mesh network to receive packets addressed to it.

Many network addressing and routing techniques fail to deliver datapackets to such a sleeping device and may indicate, to the sender of thepacket that the delivery to the sleeping device failed. Mesh networkaddressing techniques are described that provide address registrationfor sleeping child end devices with a parent router device, whichprovides a routing destination and responds to address queries on behalfof the end device. The parent router device stores received data packetsfor the sleeping end device until the end device is awake to receive thedata packets.

Packets in mesh networks may be routed based on routing costs. Forexample, routing costs may be based on one, or a combination of,characteristics of a route, such as a number of links in a routing path,or a measure of link quality. The routing costs may not fully describethe information needed to prioritize routing a data packet over oneroute relative to another. Mesh network addressing techniques aredescribed that associate preferences with address prefixes to prioritizerouting of data packets based on the preferences.

Devices in a mesh network may use processes to randomly generate anaddress in a decentralized manner without knowledge of the set of otheraddresses in use in the mesh network. As the topology of a mesh networksvaries over time, devices may attach to different routers and createadditional addresses. As addresses are propagated within the meshnetwork, duplicate addresses, created by different mesh devices, maycreate routing problems when addresses are not unique among the meshdevices. Mesh network addressing techniques are described detectduplicate addresses in the mesh network.

While features and concepts of the described systems and methods formesh network addressing can be implemented in any number of differentenvironments, systems, devices, and/or various configurations,embodiments of mesh network addressing are described in the context ofthe following example devices, systems, and configurations.

FIG. 1 illustrates an example mesh network system 100 in which variousembodiments of mesh network addressing can be implemented. The meshnetwork 100 is a wireless mesh network that includes routers 102, arouter-eligible end device 104, and end devices 106. The routers 102,the router-eligible end device 104, and the end devices 106, eachinclude a mesh network interface for communication over the meshnetwork. The routers 102 receive and transmit packet data over the meshnetwork interface. The routers 102 also route traffic across the meshnetwork 100.

The router-eligible end devices 104 are located at leaf nodes of themesh network topology and are not actively routing traffic to othernodes in the mesh network 100. The router-eligible device 104 is capableof becoming a router 102 when the router-eligible device 104 isconnected to additional mesh network devices. The end devices 106 aredevices that can communicate using the mesh network 100, but lack thecapability, beyond simply forwarding packets to its parent router 102,to route traffic in the mesh network 100. For example, a battery-poweredsensor is one type of end device 106.

Some end devices 106 may power down (i.e., sleep) some operations orhardware for a portion of the time the end device 106 is operational.For example, the end device 106 may power down radios or networkinterfaces, to conserve power between operations that require aconnection to the mesh network 100. For example, a battery-poweredtemperature sensor may only be awake periodically to transmit a reportof temperature, and then the temperature sensor sleeps until the nexttime the temperature sensor reports. When the end devices 106 sleep, theend devices 106 are not actively connected to the mesh network 100 toresponse to address queries or to receive data packets over the meshnetwork 100.

FIG. 2 illustrates an example environment 200 in which variousembodiments of mesh network addressing techniques can be implemented.The environment 200 includes the mesh network 100, in which some routers102 are performing specific roles in the mesh network 100.

A border router 202 (also known as a gateway and/or an edge router) isone of the routers 102. The border router 202 includes a secondinterface for communication with an external network, outside the meshnetwork 100. The border router 202 connects to an access point 204 overthe external network. For example, the access point 204 may be anEthernet router, a Wi-Fi access point, a cellular base station, or anyother suitable device for bridging different types of networks. Althougha single border router 202 is shown in FIG. 2, for the sake of clarity,the mesh network 100 may have any number of border routers 202, whichmay connect to any number of external networks. In anotherimplementation, an end device 106 may operate as a border router 202. Inthis case the end device operating as the border router 202 is routingtraffic between the mesh network 100 and an external network, but notrouting traffic between other mesh network devices.

The access point 204 connects to a communication network 206, such asthe Internet. A cloud service 208, which is connected via thecommunication network 206, provides services related to and/or using thedevices within the mesh network 100. By way of example, and notlimitation, the cloud service 208 provides applications that includeconnecting end user devices, such as smart phones, tablets, and thelike, to devices in the mesh network 100, processing and presenting dataacquired in the mesh network 100 to end users, linking devices in one ormore mesh networks 100 to user accounts of the cloud service 208,provisioning and updating devices in the mesh network 100, and so forth.

One of the routers 102 performs the role of a leader 210 for the meshnetwork 100. The leader 210 manages router identifier assignment, is thecentral arbiter of network configuration information, and propagatesnetwork data, which includes the network configuration information, forthe mesh network 100.

FIG. 3 illustrates an example environment 300 in which variousembodiments of mesh network addressing techniques can be implemented.The environment 300 illustrates the mesh network 100 connected to twoexternal networks, 302 and 304. In this example, two external networksare shown, but any number of physical or virtual networks may beconnected to the mesh network 100 using any suitable networkingtechnology. FIG. 3 also illustrates that each of the external networks302 and 304 are connected to the mesh network 100 by one or more borderrouters 202, as shown at 306 and 308. Any border router 202 may connectto any number of the external networks. Any external network may alsoconnect to the mesh network 100 through any number of the border routers202.

Provisioning Domains

FIG. 4 illustrates an example environment 400 in which variousembodiments of mesh network addressing techniques can be implemented.The environment 400 includes the mesh network 100 illustrated asreceiving network configuration data from the external networks 302 and304. The external network 302 provides configuration data 402 to aborder router 406. The configuration data 402 is associated with anaddress prefix assigned by the external network 302 to the mesh network100 and the address prefix is available on the mesh network 100 foraddressing and routing data packets. The external network 304 providesconfiguration data 404 to the border router 406 and to a border router408. The configuration data 404 is associated with an address prefixassigned by the external network 304 to the mesh network 100 and theaddress prefix is available on the mesh network 100 for addressing androuting data packets.

Any mesh network device may use the configuration data 402 or theconfiguration data 404 to address and route data packets. Provisioningdomains are used to assure that any potentially conflicting combinationof configuration information drawn from the configuration data 402 andthe configuration data 404 is not used for addressing a data packet to adestination. The provisioning domain is a consistent set ofconfiguration information for the mesh network 100 provided by one ormore of the border routers 202. By way of example and not limitation,the configuration information in the provisioning domain may include anon-mesh prefix, network address configuration information, externalroutes, and/or other network configuration information.

The provisioning domain associates items of network configurationinformation that are used together. Use of the network configurationinformation stored in multiple provisioning domains is mutuallyexclusive (i.e., a mesh network device uses network configurationinformation from only a single provisioning domain at a time.)

In an embodiment, the network configuration information in a particularprovisioning domain may be supplied by a single border router 202.Alternatively, multiple border routers 202 may each supply a subset ofthe information included in any particular provisioning domain, in whichcase the provisioning domain is the collection of the subsets of networkconfiguration information supplied by the multiple border routers 202.

The provisioning domains for the mesh network 100 are maintained astuples by the leader 210. Each of the provisioning domains is identifiedby a unique identifier included in the tuple. The leader 210 propagatesthe provisioning domains to the routers 102 and the router-eligible enddevices 104 in the mesh network 100. For example, the leader 210 maypropagate the provisioning domains in network data of the mesh network100 using any suitable protocol, such as Multicast Protocol for LowPower and Lossy Networks (MPL), or multicasting an MLE-UPDATE message.

By way of example, and not limitation, the tuple for the provisioningdomain includes a network address prefix (e.g., an IPv6 address prefix),a unique provisioning domain identifier with which the tuple isassociated, a Routing Locator (RLOC) for the border router 202 thatmakes the network address prefix available to the mesh network 100, anumber of configuration flags for the provisioning domain, and/or arouter preference value.

The configuration flags in the tuple may include one or more flags toindicate that: the route in the provisioning domain will be stable for aminimum period of time, mesh network devices are allowed toauto-configure addresses using the network address prefix, mesh networkdevices are allowed to use previously configured addresses using thenetwork address prefix, the border router 202 associated with theprovisioning domain manages address configuration for the networkaddress prefix, the border router 202 associated with the provisioningdomain supplies other network configuration data (e.g., Domain NameService (DNS) servers), and/or the border router 202 associated with theprovisioning domain provides a default route for data packets with asource using the network address prefix.

Mesh Network Address Architecture

In the mesh network 100, a link-local scope may be defined by a set ofmesh network interfaces (mesh network devices) that are reachable with asingle radio transmission. In other words, the link-local scope includesthe mesh network devices that connect directly to each other within themesh network 100.

The mesh network devices use link-local addresses to reach the meshnetwork devices within range of the single radio transmission. The meshnetwork devices use the link-local addresses to discover neighbors,configure links, and/or exchange routing information. In certainembodiments, the mesh network device is assigned the link-local addresswith an interface identifier derived from an IEEE 802.15.4 ExtendedAddress of the Media Access Control (MAC) layer of the IEEE 802.15.4network stack. For example, the mesh network device assigns a link-localIPv6 address with an Interface Identifier (IID) that is obtained bycomputing a SHA-256 hash of the IEEE 802.15.4 Extended Address, andtaking the first eight bytes of that SHA-256 hash as the IID. Whenattached to the mesh network 100, the mesh network device assigns thelink-local IPv6 address the same IID as an RLOC assigned to the meshnetwork device.

In the mesh network 100, a mesh network local (i.e, Mesh-Local orRealm-Local) scope is defined by the set of the mesh interfaces (meshnetwork devices) participating within the same mesh network 100, throughany number of radio transmissions. Moreover, all the mesh interfaceswithin the same Mesh-Local scope share the same mesh commissioningparameters (i.e., a master key, an extended Personal Area NetworkIdentifier (PANID), and a Mesh-Local prefix) and are activelyparticipating in the same mesh network 100. Mesh network devices formMesh-Local addresses out of the Mesh-Local prefix.

The mesh network devices use the Mesh-Local addresses to reach othermesh network devices within the same mesh network 100. When the meshnetwork device is attached to the mesh network 100, there are twoMesh-Local addresses assigned to the mesh network device. The first is aRouting Locator (RLOC), which includes a prefix that is the Mesh-LocalUnique Local Address (ULA) Prefix, and an Endpoint Identifier (EID),which also includes a prefix that is the Mesh-Local ULA Prefix. The RLOCis an encoding of a Router Identifier (Router ID) of a parent router 102and Child Identifiers (Child IDs) of the end devices 106 that arechildren of the parent router 102. The second assigned Mesh-Localaddress is Mesh-Local Endpoint Identifier (ML-EID), which is an EIDwhere the prefix is the Mesh-Local ULA Prefix and the InterfaceIdentifier (IID) is chosen at random.

In addition to unicast Mesh-Local addresses and Mesh-Local multicastaddresses, the mesh network 100 supports anycast addressing. The meshnetwork 100 uses IPv6 Anycast addresses to communicate with mesh networkDHCPv6 Agents. A Mesh-Local Prefix-based DHCPv6 Agent Anycast address isdefined that is used by the end devices 106 to reach a DHCPv6 Agent fora given prefix. The prefix-based DHCPv6 Agent Anycast address is an RLOCformed using the Mesh-Local ULA Prefix and the Interface Identifier andhas the form 0000:00FF:FE00:FC0n, where ‘n’ is an IPv6 over Low powerWireless Personal Area Networks (6LoWPAN) Context ID assigned to anon-mesh prefix that the border router 202 serves.

The mesh network 100 also uses an IPv6 Anycast addresses to communicatewith mesh network servers. A mesh network server is any mesh device thatcontributes network data to the leader 210, for example a border router202, a DHCP server, and so forth. A Mesh-Local Service Anycast addressis defined, which the end devices 106 may use to reach a given type ofmesh network server. The Mesh-Local Service Anycast address is an RLOCformed using the Mesh-Local Prefix and the interface identifier has theform 0000:00FF:FE00:FCmn where ‘mn’ is a Service Type ID plus sixteen.

The mesh network devices also assign unicast addresses that have largerscope than the Mesh-Local scope. Within the mesh network 100, globalunicast addresses (GUA) are used to enable communication with devicesoutside the mesh network 100 (e.g., over logically connected networks,such as Wi-Fi or via the Internet). The global unicast addresses mayinclude any IPv6 unicast address that has a scope greater than theMesh-Local scope. The provisioning domains in the network data indicateglobal prefixes that may be used when configuring global addresses. Forexample, a mobile device connected to an external network may connect toa device on the mesh network 100 through an external network connection,via a border router 202, using global addresses.

The provisioning domains indicate one or more on-mesh prefixes assignedto the mesh network 100. In an embodiment, the mesh network devices mayassign a global address out of an on-mesh prefix. Alternatively, if thenetwork data of the mesh network 100 indicates the presence of one ormore DHCPv6 servers on the mesh network 100, the mesh network devicesmay assign a global address using DHCPv6.

In some embodiments, all the mesh network devices in the mesh network100 use a number of different unicast addresses for communication (e.g.,IPv6 unicast addresses). For addresses that have a scope larger than theLink-Local scope, the mesh network 100 may define two different types ofaddresses: Routing Locators (RLOCs) and Endpoint Identifiers (EIDs).

The RLOC is a network address (e.g., IPv6 address) that identifies thelocation of a particular mesh network device within the mesh network100. In some embodiments, the RLOC is only used by the mesh networkdevices for communicating control traffic and delivering datagrams(e.g., IPv6 datagrams, UDP transmissions, and so forth) to theirintended destinations. In such embodiments, applications generally donot have visibility to or use RLOCs.

A unicast RLOC has the Mesh-Local scope and encodes the Router ID andthe Child ID in an Interface Identifier. As an example and not alimitation, the prefix for the unicast RLOC is the Mesh-Local prefix andthe Interface Identifier, and has the form 0000:00FF:FE00:xxxx, where‘xxxx’ is a 16-bit value that embeds the Router ID and the Child ID.

A mesh network Endpoint Identifier (EID) is a network address (e.g., anIPv6 address) that uniquely identifies a given mesh network devicewithin the mesh network 100 and is independent from topology changes inthe mesh network 100. Other than the RLOC, the mesh network 100considers all other unicast addresses (such as IPv6 unicast addresses)that have the same or larger scope than the Mesh-Local scope as EndpointIdentifiers. The Endpoint Identifier is independent from the position ofthe mesh network device within the mesh network 100 and does not changein response to topology changes in the mesh network 100.

The EID provides a stable identifier for the mesh network device withinthe mesh network 100. However, the EID is not directly routable becausethe mesh routing protocol only exchanges route information for RLOCs. Todeliver a datagram, such as an IPv6 datagram, with an EID as the IPv6Destination Address, a mesh network device performs an EID-to-RLOCmapping lookup.

For example, the mesh network device receives a data packet with aDestination Address, which includes an IPv6 address prefix thatindicates that the address has an associated on-mesh RLOC. The meshnetwork device can determine that there is an associated on-mesh RLOC bycomparing the received IPv6 address prefix to the address prefixes inthe provisioning domains propagated within the mesh network 100, asdescribed above.

If the mesh network device determines that the Destination Address isassociated with an on-mesh address prefix, the mesh network devicediscovers an EID-to-RLOC mapping for the received address. TheEID-to-RLOC mapping is found any suitable manner, such as searching in acache of EID-to-RLOC mappings stored by the mesh network device ormulticasting an address query to all routers 102 and/or router-eligibleend devices in the mesh network 100.

In an embodiment, the mesh network device includes an address query setthat caches the EID-to-RLOC mappings. The address query set ofEID-to-RLOC mappings includes EID-to RLOC mappings obtained from theaddress queries initiated by the mesh network device. The address queryset may also include EID-to-RLOC mappings obtained opportunistically byobserving mesh network traffic routed through the mesh network device,and storing the EID-to-RLOC mappings, from the observed traffic, in theaddress query set.

In an embodiment, the mesh network device multicasts an address querymessage including the EID, for which the EID-to-RLOC mapping is sought,over the mesh network 100. The address query message is multicast to allthe routers 102 and the router-eligible end devices 104. The addressquery message is multicast using a multicast address designating thatthe address query message is addressed to all the routers 102 and therouter-eligible end devices 104 in the mesh network 100. Any router 102and/or router-eligible end device 104 that has an EID-to-RLOC mapping,for the EID in the address query message, responds to the address querymessage by sending the associated EID-to-RLOC mapping to the meshnetwork device that initiated the address query.

To improve address query performance and reduce network traffic, themesh network device may limit the number of hops for the multicast ofthe address query message. For example, the end device 106 may only needto transmit the address query message over a single hop to reach theparent router 102 to obtain the desired EID-to-RLOC mapping. If thedesired EID-to-RLOC mapping is not returned from the address querymulticast over a limited number of hops, the mesh network devicemulticasts the address query message over a larger number of hops, suchas multicasting to the entire mesh network 100.

Additionally, to improve the speed of EID-to-RLOC mapping lookups andreduce network traffic, the mesh network device may combine theabove-described embodiments in any suitable fashion, such as searchingthe address query set and then multicasting the address query, if thesearch of the address query set fails to return the EID-to-RLOC mappingfor the given EID.

Because the EIDs remain stable in the face of topology changes in themesh network 100, it is be preferable for application programs to usethe EIDs when communicating with the mesh network devices. However, insome embodiments, application programs may use RLOCs directly for simplerequest-response communication patterns within the mesh network 100.

In the mesh network 100, multicast addressing includes various multicastgroups. Multicast delivery depends on the type of device andregistration of a multicast address in the mesh network. For example, anall-nodes multicast group that includes both powered mesh networkdevices and mesh network devices that sleep for periods of time, such asbattery-powered sensors, or an all-routers multicast group includes boththe routers 102 and the router-eligible end devices 104. Multicastgroups are defined at various scopes, such as link-local and Realm-localscopes. For example, each of the mesh network devices subscribes to alink-local all-nodes multicast address (e.g., ff02::1). The mesh networkdevices operating as a router 102, a router-eligible device 104, or aborder router 202 subscribe to a link-local all-routers multicastaddress (e.g., ff02::2). In another example, each of the mesh networkdevices subscribes to a Realm-local all-nodes multicast address (e.g.,ff03::1). The mesh network devices operating as a router 102, arouter-eligible device 104, or a border router 202 subscribe to aRealm-local all-routers multicast address (e.g., ff03::2).

With respect to multicast addresses with the global scope, the borderrouters 202 may limit or restrict forwarding of multicast packets fromthe external networks into the mesh network 100. For example, the borderrouters 202 may restrict forwarding multicast packets fromhigher-bandwidth external networks to avoid overwhelming the capacity ofthe mesh network 100. However, the border routers 202 may selectivelyforward multicast packets from the external networks, into the meshnetwork 100, when such multicasts are appropriate for the mesh network100, such as a multicast packet from the cloud service 208 that isassociated with an application that uses the mesh network 100.

End Device Addressing

Many types of the end devices 106, such as sensors, are designed forlow-power, battery operation for long periods of time, such as months oryears. To achieve long service life a battery-powered mesh device mayturn off, or sleep, many operations such as radio and network interfacesfor periods of time. The end devices 106 can communicate using the meshnetwork 100, but lack the capability, beyond simply forwarding to theparent router 102, to route traffic in the mesh network 100. As such,this type of device may referred to as a Reduced Function Device (RFD)or a sleepy child device. During sleep periods, the end device 106 isnot available on the mesh network 100 to receive data packets addressedto the end device 106.

When the end device 106 attaches to the parent router 102, an addressregistration for the end device 106 assigns the Child ID to the enddevice 106. Using the assigned Child ID and the Router ID of the parentrouter 102, the parent router 102 responds, on behalf of the child enddevice 106, to mesh network traffic addressed to the child end device106.

When the end device 106 registers with the parent router 102, the enddevice 106 registers multicast addresses with the parent router 102. Forexample, by default the parent router 102 does not queue multicastmessages for the child end device 106. By registering the multicastaddresses, the parent router can determine which multicast messages areof interest the child device 106 and the parent router 102 queues thosemulticast messages on behalf of the child end device 106. In anembodiment, some multicast addresses are mandatory for mesh networkdevices and are implicitly registered for each mesh network device. Forthe child end device 106, the mandatory multicast addresses areimplicitly registered with the parent router 102. Multicast messages forthese mandatory multicast addresses are queued by the parent router 102for the child end device 106.

Routing of packet data in the mesh network 100 is based on RLOCs thatare mapped to EIDs. For the child end device 106 that is attached to theparent router 102, the router ID, of the parent router 102 and the ChildID, of the child end device 106, are encoded into an InterfaceIdentifier (IID). For example, the Router ID is encoded into a firstsubset of bit fields in the IID and the Child ID is encoded into asecond subset of bit fields in the IID. By way of example and notlimitation, the Router ID is encoded into bits 0-5 of a 16-bit IID andthe Child ID is encoded into bits 7-15 of the IID. Any given router 102may have multiple child end devices 106 registered at any given time.

The RLOC for each end device 106 is encoded with Mesh-Local scope fromthe encoded Router ID and Child ID in the IID. The RLOC for the enddevice 106 is used by the mesh network devices to address and route datapackets to the end device 106. When a data packet is addressed usingsuch an RLOC, the data packet is routed in the mesh network 100 to theparent router 102 of the child end device 106, which is important in thecases where the end device 106 sleeps for periods of time. In caseswhere the end device 106 does not sleep, the parent router 102 mayrespond with the RLOC for the child end device 106, which will allowpackets to be sent directly to the child end device 106.

The parent router 102 responds to any message addressed to the child enddevice 106. For example, the parent router 102 responds to any addressquery, containing the EID of the child end device 106, with the RLOC forthe child end device 106.

The child end device 106 operates as a host-only device and forwards allpackets to the parent router 102 for communication across the meshnetwork 100 and/or external networks. For example, the child end device106 does not resolve an EID to an RLOC. The child end device 106 dependson the parent router 102 to perform the resolution. The child end device106 depends on the parent router 102 to select the border router 202 forpackets with a destination outside the mesh network 100.

The child end device 106 also depends on the parent router 102 toreceive and store all data packets addressed to the child device 106, aswell as multicast messages from multicast addresses that the child enddevice 106 registered with the parent router 102, which may be receivedwhile the child end device 106 is sleeping. When the child end device106 awakes, the stored data packets are forwarded to the child enddevice 106. The parent router 102 responding on behalf of the sleepingchild end 106 device ensures that traffic for the child end device 106is handled efficiently and reliably on the mesh network 100, as theparent router 102 responds to messages sent to the child end device 106,which enables the child end device to operate in a low-power mode forextended periods of time to conserve power.

Preferences for Prioritized Routing

Decisions to determine a route for a data packet in mesh networks may bebased on a routing cost associated with each of the potential routesover which a data packet can be forwarded. For example, the routing costmay be based on one, or a combination of, characteristics of a route andthe constituent hops in the route. For example routing costs may bedetermined based on a number of hops in a routing path, or a measure oflink quality for hops in the route.

In cases where a data packet is routed to a destination in an externalnetwork, such as the Internet, there may be other factors to consider inmaking a decision between potential routes. Different external networksmay have different financial costs, reliability, latency, bandwidth,security, and so forth, which may make one route preferable overanother. However, routing costs may not fully describe the other factorsuseful in prioritizing the routing of a packet data over one externalnetwork relative to another.

For example, a packet can be forwarded over either a route using a Wi-Finetwork connection, or a route using a cellular network connection. Itmay be preferable to prioritizing the Wi-Fi network route over thecellular network route, if the cost of using the Wi-Fi network is lower.In another example, if there is a wired network (e.g., Ethernet) routeit may be prioritized over a wireless network route, if the wirednetwork offers a better quality of service (QoS) guarantee than thewireless network.

Each provisioning domain in the network data is associated with anaddress prefix assigned by an external network. Each provisioning domainalso includes the router preference value associated with the addressprefix and the associated border router 202. The router preference valueis used to compare preferences in order to prioritize candidate routes.

As an example and not a limitation, the preference may be set to valuescorresponding to a high preference, a medium preference, or a lowpreference. The value of any preference may be set by a user, based onany suitable criteria the user chooses for routing preferences. If novalue is set for a preference, a default value may be set when theprovisioning domain is populated. For example, the value for thepreference may be set to a value representing a medium preference.

In an embodiment, the router 102 uses the route information in theprovisioning domains along with mesh routing cost and next hopinformation in making forwarding decisions. If an IPv6 DestinationAddress is not an on-mesh address, then the router 102 uses the IPv6Source Address to determine a set of the border routers 202 that offerroutes associated with the same provisioning domain as the prefix of theIPv6 Source Address.

Within the set of border routers 202, the router 102 finds a longestExternal Route prefix match as follows:

-   -   1) If two address prefixes match, choose the address prefix with        higher preference.    -   2) If no External Route matches, choose the border router 202        that offers a default route.    -   3) If more than one border router 202 offers a default route,        choose the border router 202 with higher preference.    -   4) Finally, if two or more border routers 202 remain, choose the        border router 202 with lowest mesh path cost.

If the IPv6 Destination Address is a Prefix-Based DHCPv6 Agent AnycastRLOC, then the router 102 uses a Context ID encoded in the Anycastaddress to determine the set of DHCPv6 Agents with the same provisioningdomain as the prefix associated with the Context ID. Within that set,the router 102 finds the closest DHCPv6 Agent as follows:

-   -   1) If more than one DHCPv6 Agent offers a default route, choose        the DHCPv6 Agent with higher preference value.    -   2) If two or more DHCPv6 Agents remain, choose the DHCPv6 Agent        with lowest mesh path cost.

Duplicate Address Detection

FIG. 5 illustrates an example mesh network system 500 in which variousembodiments of mesh network addressing as generally related to duplicateaddress detection can be implemented. The example mesh network system500 includes the mesh network 100 described with reference to FIGS. 1and 2, and includes router devices 102 and end devices 106. Althoughsome of the router devices are labeled with number identifiers otherthan 102 merely to distinguish the devices in the following discussionof the example mesh network system 500, any of the routers may beimplemented as a router 102 described herein. Similarly, although theend devices are labeled with number identifiers other than 106 merely todistinguish the devices in the following discussion, any of the enddevices may be implemented as an end device 106 described herein.

An end device 106 includes a mesh network interface for communicationover the mesh network, such as via a router device 102 that can receiveand transmit packet data over the mesh network interface, and routetraffic across the mesh network 100. Further, an end device (alsoreferred to as a leaf node or edge device of the mesh network) cancommunicate over the mesh network 100 by forwarding data to itsassociated router device 102, which then routes the data across the meshnetwork. Generally, the mesh network devices, and in particular the enddevices, randomly select or generate an IP address on the mesh network,such as for privacy reasons. However, one or more of the mesh networkdevices may select or generate the same address, which promotes the needto check for duplicate addresses generated by more than one of the meshnetwork devices.

When an end device 106 attaches to a router device 102 in the meshnetwork 100 (e.g., the end device is communicatively coupled to therouter device for wireless communication in the mesh network), the enddevice will store a device state in the router that attaches the enddevice in the mesh network. For example, the stored device state is atuple state (e.g., a tuple being an ordered list of elements) thatincludes an address, a random value, and a lifetime. The address isselected or generated by the end device, the random value is generatedby the end device, and the lifetime indicates how long the router willmaintain the state for the attached end device. For example, an enddevice 502 is attached to a router 504 in the mesh network 100, and theend device generates an address 1111 and a random value 2653 with alifetime of sixty minutes (60 m). The router 504 maintains a tuple state506 of the end device 502 for the designated lifetime of sixty minutes(60 m). Note that the end device 502 maintains its own state as anaddress identifier 508 of the end device. As described in more detailbelow, the random value can be used by a mesh network device (e.g., anend device or a router device) to test the uniqueness of a deviceaddress in the mesh network.

Similar to the end device 502, an end device 510 is attached to a router512 in the mesh network 100, and the end device 510 generates an address2222 and a random value 5829 with a lifetime of forty-five minutes (45m). The router 512 maintains the tuple state 514 of the end device 510for the designated lifetime, or remaining lifetime, and the end device510 maintains its own state as an address identifier 516 of the enddevice. Similarly, an end device 518 is attached to a router 520 in themesh network 100, and the end device 518 generates an address 1111 and arandom value 4829 with a lifetime of thirty minutes (30 m). The router520 maintains the tuple state 522 of the end device 518 for thedesignated lifetime, or remaining lifetime, and the end device 518maintains its own state as an address identifier 524 of the end device.In this example, the lifetimes of the respective end devices arerepresented in minutes, but may be designated as any other timeduration, such as seconds, hours, days, etc. In other scenarios, the enddevice 518 may have been attached to the router 520 with a lifetime ofsixty minutes (60 m) (i.e., thirty minutes previous to the current stateof the mesh network at thirty minutes). Similarly, the end device 510may have been attached to the router 512 with a lifetime of sixtyminutes (60 m) (i.e., fifteen minutes previous to the current state ofthe mesh network at forty-five minutes).

In implementations of the mesh network 100, the router devices 102 mayhave limited memory, and the end devices 106 may attach to differentones of the router devices at various times. For example, FIG. 6continues the example of duplicate address detection when the end device518 moves from the router device 520 and attaches to a router device526. Given the lifetime to maintain the address identifier of an enddevice, a router device is able to reclaim memory that would otherwisestore an address identifier of an end device that has attached to adifferent router device. As an end device moves around and attaches todifferent ones of the router devices, it leaves behind the addressidentifier as the stored tuple state at previous routers for thecorresponding designated lifetime.

FIG. 6 further illustrates the example of duplicate address detection inthe example mesh network system 500 in accordance with variousembodiments of mesh network addressing. In this example 600, the enddevice 518 has moved from the router device 520 (e.g., as shown in FIG.5) and has attached to the router device 526 in the mesh network 100.The end device 518 still has the address 1111 and generates a new randomvalue 9482 with a lifetime of sixty minutes (60 m). The router 526maintains the new tuple state 602 of the end device 518 for thedesignated lifetime of sixty minutes (60 m). Note that the end device518 maintains its own state as the address identifier 518, which hasbeen updated to include both the previous tuple state 522 that ismaintained by the router 520 and the new tuple state 602 that ismaintained by the router 526. Also note that the lifetime designationsfor all of the end devices have all been decremented by ten minutes toindicate that the end device 518 moved and attached to the differentrouter 526 ten minutes after the previous state of the mesh network whenthe end device 518 was attached to the router 520.

The end device 518 can initiate a multicast address query to all of theother mesh network devices in the mesh network 100, requesting that anyof the other mesh network devices with the same address respond backwith the corresponding tuple state that is stored for that same address.For example, the end device 518 can initiate a multicast address queryin the mesh network 100, requesting that any of the other mesh networkdevices with the same address 1111 respond back with the correspondingstored tuple state at an associated router device. The same address of1111 alone does not provide enough information to detect a duplicateaddress in the mesh network. However, the combination of the address andthe random number provides a basis for detecting a duplicate address ofa mesh network device in the mesh network.

For example, in response to the multicast address query that isinitiated by the end device 518, the end device will receive back the(1111, 4829, 20 m) tuple state 522 from the router 520 (e.g., that theend device 518 was previously attached to); the (1111, 9482, 60 m) tuplestate 602 from the router 526 (e.g., that the end device 518 iscurrently attached to); and the (1111, 2653, 50 m) tuple state 506 fromthe router 504. Although the (1111, 4829, 20 m) tuple state 522indicates a duplicate address 1111 at a router device other than the onethat the end device 518 is currently attached to, the end device 518 candetermine that the duplicate was previously generated by the end device518 itself based on the end device maintaining its own states as theaddress identifier 524. Similarly, the (1111, 2653, 50 m) tuple state506 from the router 504 indicates a duplicate address 1111 with the enddevice 502, which is detected by the end device 518 as a duplicateaddress because the random value 2653 does not match any of the randomvalues (e.g., 4829 and 9482) that have been generated and stored by theend device.

This is an example of first-party duplicate address detection becausethe end device 518 is initiating the address query to determine if anyof the other mesh network devices have an address that is a duplicate ofthe end device address. In a similar technique, third-party duplicateaddress detection can be initiated by some other mesh network device inthe mesh network 100 that wants to determine whether there is one ormore duplicate addresses of the mesh network devices. Third-partyduplicate address detection is described with reference to FIGS. 5 and7.

When the end device 518, or some other mesh network device, detects aduplicate address in the mesh network 100, the end device can direct themesh network devices that have the duplicate address to generate a newaddress. In implementations, an end device or router device can detectthe possibility of a duplicate address and multicast an address errornotification to notify the other mesh network devices of the detectedduplicate address. Further, a parent device (e.g., of an end device)that receives a multicast address error notification can check todetermine whether any of its network device children is the target ofthe address error notification, and send a unicast message so thatsleepy children can get the notification as well.

In embodiments of duplicate address detection, the mesh network 100 canbe implemented with a form of optimistic duplicate address detection,where IPv6 addresses may be assigned and used before any attempt todetect and resolve duplicates takes place. The ML-EID is used touniquely identify the mesh network devices with high probability, sincethose are randomly chosen by a given device. Although a device's IEEE802.15.4 extended address may be used, the ML-EID is utilized becausethose are always encrypted when transmitted over the air. The 802.15.4extended addresses are sent in the clear as part of the 802.15.4 header,so a device may change its extended address to preserve privacy. Addressnotification messages can be used to detect duplicate EIDs. The meshnetwork devices can receive address notification messages in response toaddress queries or asynchronously in the case of proactive addressnotifications. The mesh network devices perform duplicate detection inboth scenarios.

When the same EID is assigned to two or more mesh network devices in thesame mesh network partition, an address query generates multiple addressnotification messages. The receiver of the address notification messagescompares the ML-EID TLVs of the received address notification messagesto determine whether or not the multiple replies are due to multipleinterfaces using the same IPv6 address or a single interface migratingfrom router device to router device. If two or more received addressnotification messages have the same EID, but different ML-EIDs, then thereceiving device can determine that the EID is in use by more than onedevice and multicasts an address error notification message to arealm-local all-routers multicast address (FF03::2).

A mesh network device that receives a proactive address notificationmessage compares the RLOC16 of the address notification message to theRLOC16 contained in its EID-to-RLOC map cache. If an EID-to-RLOC mapcache entry exists for the EID and the RLOC16 differs, then the meshnetwork device can determine that the EID may be in use by more than onedevice and unicasts an address error notification to the RLOC16contained in the EID-to-RLOC map cache entry, and then updates theEID-to-RLOC map cache entry with the newly received RLOC16. This unicastmessage serves to check whether the old RLOC is truly a duplicate userof the EID or simply stale data.

The receiver of a unicast address error notification message candetermine whether the target EID belongs to itself or, in the case of arouter device, belongs to one of its children, and compares the ML-EIDassociated with the target EID in its local state and the ML-EID in theaddress error notification message. If the ML-EIDs differ, then the meshnetwork device can determine that the target EID is in use by more thanone device and multicasts an address error notification message to therealm-local all-routers multicast group (FF03::2).

A mesh network device can send address error notification messages tonotify other mesh network devices that a duplicate EID may be in use. Inimplementations, the address error notification messages are CoAP POSTmessages containing the detected duplicate IPv6 address and the ML-EIDcontained in the Address Notification that triggered the duplicateaddress detection: URI-Path; NON POST coap://[<peer address>]:MM/a/ae;CoAP Payload; Target EID TLV; and ML-EID TLV. The IPv6 source address isthe RLOC of the originator device, and the IPv6 destination address iseither the realm-local all-routers multicast address (FF03::2) when sentvia multicast, or the RLOC of the destination device when sent viaunicast. The Target EID TLV and the ML-EID TLV are copied from theaddress notification or address error notification message thattriggered the message.

When a mesh network device receives an address error notificationmessage, the mesh network device can check whether the target EID isassigned to its mesh network interface. If the target EID is assigned toits mesh network interface and the ML-EID differs, then a duplicate isdetected and the device stops using the target EID. If the recipientdevice of an address error notification is a router device, then thedevice checks whether the target EID is assigned to one of its RFDchild's mesh network interfaces. If the target EID is assigned to an RFDchild's mesh network interface and the ML-EID differs, then a duplicateis detected and the router device unicasts an address error notificationto the corresponding RFD child (e.g., an end device) and the routerdevice removes the target EID from the RFD child address set. If therecipient device of a unicast address error notification is not an RFD,then the mesh network device multicasts an address error notification tothe realm-local all-routers multicast address (FF03::2).

FIG. 7 further illustrates the example of duplicate address detection inthe example mesh network system 500 in accordance with variousembodiments of mesh network addressing. In this example 700, the enddevice 518 has moved from the router device 520 (e.g., as shown in FIG.5) and has attached to the router device 526 in the mesh network 100.The end device 518 still has the address 1111 and generates a new randomvalue 9482 with a designated lifetime of sixty minutes (60 m). Therouter 526 maintains the new tuple state 702 of the end device 518 forthe designated lifetime of sixty minutes (60 m).

In this example 700, the tuple state 702 includes an address, one ormore previous random values, the current random value, and a lifetime.This format of the tuple state 702 provides a trace of where the enddevice 518 has been (e.g., a trace of which routers the end device hasbeen attached to). For example, the end device 518 that moves from therouter 520 and is attached to the router 526 in the mesh network 100 hasthe address 1111 and generates the new random value 9482 with a lifetimeof sixty minutes (60 m). The router 526 maintains (1111, 9482, 4829, 60m) as the tuple state 702 of the end device 518 for the designatedlifetime. The format of the tuple state 702 including the one or moreprevious random values provides that an end device can be detected as itmoves and attaches to various router devices, versus an end device thatis attached to two router devices. The end device 518 also maintains itsown state as the address identifier 524, and the address identifier forthe end device 518 includes both the previous tuple state 522 and thenew tuple state 702.

Another of the mesh network devices, such as either of the routerdevices 102 in the mesh network 100, can initiate a multicast addressquery to all of the other mesh network devices, requesting that any ofthe other mesh network devices with a designated address respond backwith the corresponding tuple state that is stored for that same address.For example, a router device 102 can initiate a multicast address queryin the mesh network 100, requesting that any of the other mesh networkdevices with the address 1111 respond back with the corresponding storedtuple state. In response to the multicast address query, the routerdevice will receive back the (1111, 4829, 20 m) tuple state 522 from therouter 520 (e.g., that the end device 518 was previously attached to);the (1111, 9482, 4829, 60 m) tuple state 702 from the router 526 (e.g.,that the end device is currently attached to); and the (1111, 2653, 50m) tuple state 506 from the router 504.

Although the random value of 4829 in the (1111, 4829, 20 m) tuple state522 is contained in the (1111, 9482, 4829, 60 m) tuple state 702, therouter 102 can determine that the (1111, 4829, 20 m) tuple state 522 andthe (1111, 9482, 4829, 60 m) tuple state 702 are generated by the samemesh network device (e.g., the end device 518 in this example). However,the random value of 2653 in the (1111, 2653, 50 m) tuple state 506 doesnot occur in either of the (1111, 4829, 20 m) tuple state 522 or the(1111, 9482, 4829, 60 m) tuple state 702, and the router device detectsa duplicate address.

A benefit of third-party duplicate address detection is that analways-on router (e.g., a router device 102) may test the uniqueness ofan address without involving a battery-powered end device, unlike in thefirst-party duplicate address detection scenario described withreference to FIGS. 5 and 6 where the end device 518 is powered toinitiate the multicast address query, receive the responses, and processthe responses. An optimization of the techniques for duplicate addressdetection includes using the lifetime value of a tuple state to encodethe random value and reduce the need to maintain random values by theassociated router device (e.g., due to limited available memory at therouter devices). Additionally, the k-most recent random values can bemaintained to handle network partitions and/or message drops.

FIG. 8 illustrates an example 800 of duplicate address detection in theexample mesh network system 500 in accordance with various embodimentsof mesh network addressing. In this example 800, when an end device 106attaches to a router device 102 in the mesh network 100 (e.g., the enddevice is communicatively coupled to the router device for wirelesscommunication in the mesh network), the end device will store a devicestate in the router that attaches the end device in the mesh network.For example, the stored device state is time-based information thatincludes a time attached (“Ta”) when an end device 106 attaches to arouter device 102, and includes a last transaction time (“Tt”) when anend device 106 last communicates with the attached router device 102.

For example, the end device 502 is attached to the router 504 in themesh network 100, and the end device generates an address 1111 with alifetime of sixty minutes (60 m). The end device 502 maintains its ownstate as an address identifier 802 of the end device. The router 504maintains the time-based information 804 that indicates the end device502 attached to the router 504 at time Ta: 4, and the end device 502last communicated a transaction with the router 504 at time Tt: 6. Inthis example, the indicated attach times and transaction times, such asthe attach time Ta: 4 and the last transaction time Tt: 6, are simplyindicated as whole numbers that may represent any one or combination ofseconds, minutes, hours, days, and/or other time duration.

Similar to the end device 502, the end device 510 is attached to therouter 512 in the mesh network 100, and the end device generates anaddress 2222 with a lifetime of forty-five minutes (45 m). The enddevice 510 maintains its own state as an address identifier 806 of theend device. The router 512 maintains the time-based information 808 thatindicates the end device 510 attached to the router 512 at time Ta: 3,and the end device 510 last communicated a transaction with the router512 at time Tt: 7. Similarly, the end device 518 is attached to therouter 520 in the mesh network 100, and the end device generates anaddress 1111 with a lifetime of thirty minutes (30 m). The end device518 maintains its own state as an address identifier 810 of the enddevice. The router 520 maintains the time-based information 812 thatindicates the end device 518 attached to the router 520 at time Ta: 2,and the end device 518 last communicated a transaction with the router520 at time Tt: 5. FIG. 9 continues the example of duplicate addressdetection when the end device 518 moves from the router device 520 andattaches to the router device 526.

FIG. 9 further illustrates the example of duplicate address detection inthe example mesh network system 500 in accordance with variousembodiments of mesh network addressing, as described with reference toFIG. 8. In this example 900, the end device 518 has moved from therouter device 520 (e.g., as shown in FIG. 8) and has attached to therouter device 526 in the mesh network 100. The end device 518 still hasthe address 1111 with a lifetime of 30 minutes (30 m). The router 526maintains new time-based information 902 that indicates the end device518 attached to the router 526 at time Ta: 10, and the end device 518last communicated a transaction with the router 526 at time Tt: 13. Notethat the indicated transaction times for all of the end devices have allbeen updated based on the last communicated transactions with therespective router devices.

The end device 518 can initiate a multicast address query to all of theother mesh network devices in the mesh network 100, requesting that anyof the other mesh network devices with the same address respond backwith the corresponding time-based information that is stored for thatsame address. For example, the end device 518 can initiate a multicastaddress query in the mesh network 100, requesting that any of the othermesh network devices with the same address 1111 respond back with thecorresponding stored time-based information at an associated routerdevice. The same address of 1111 alone does not provide enoughinformation to detect a duplicate address in the mesh network. However,the time-based information, or the combination of the address and thetime-based information, provides a basis for detecting a duplicateaddress of a mesh network device in the mesh network.

For example, in response to the multicast address query that isinitiated by the end device 518, the end device will receive back the(Ta: 2, Tt: 5) time-based information 812 from the router 520 (e.g.,that the end device 518 was previously attached to); the (Ta: 10, Tt:13) time-based information 902 from the router 526 (e.g., that the enddevice 518 is currently attached to); and the (Ta: 4, Tt: 12) time-basedinformation 804 from the router 504. A duplicate address of a meshnetwork device can be detected based on overlapping time durationsbetween the attach time Ta of an end device and the last transactiontime Tt when the end device communicates a transaction with the attachedrouter device. For example, the (Ta: 4, Tt: 12) time-based information804 that corresponds to the end device 502 (having the address of 1111)overlaps both the (Ta: 2, Tt: 5) time-based information 812 and the (Ta:10, Tt: 13) time-based information 902 that corresponds to the enddevice 518 (also having the address of 1111). Accordingly, the enddevice 518 can detect the time-based information overlap as a meshnetwork device having a duplicate address.

This is an example of first-party duplicate address detection becausethe end device 518 is initiating the address query to determine if anyof the other mesh network devices have an address that is a duplicate ofthe end device address. In a similar technique as describe above,third-party duplicate address detection can be initiated by some othermesh network device in the mesh network 100, such as any of the routerdevices 102, that wants to determine whether there is one or moreduplicate addresses of the mesh network devices.

Example methods 1000 through 1400 are described with reference torespective FIGS. 10-14 in accordance with one or more embodiments ofmesh network addressing. Generally, any of the components, modules,methods, and operations described herein can be implemented usingsoftware, firmware, hardware (e.g., fixed logic circuitry), manualprocessing, or any combination thereof. Some operations of the examplemethods may be described in the general context of executableinstructions stored on computer-readable storage memory that is localand/or remote to a computer processing system, and implementations caninclude software applications, programs, functions, and the like.Alternatively or in addition, any of the functionality described hereincan be performed, at least in part, by one or more hardware logiccomponents, such as, and without limitation, Field-programmable GateArrays (FPGAs), Application-specific Integrated Circuits (ASICs),Application-specific Standard Products (ASSPs), System-on-a-chip systems(SoCs), Complex Programmable Logic Devices (CPLDs), and the like.

FIG. 10 illustrates example method(s) 1000 of mesh network addressing asgenerally related to addressing and routing packets in a mesh network.The order in which the method blocks are described are not intended tobe construed as a limitation, and any number of the described methodblocks can be combined in any order to implement a method, or analternate method.

At block 1002, an address prefix and associated configurationinformation is received from an external network and, at block 1004, aprovisioning domain is created and associated with the received addressprefix. For example, a border router 202 receives an address prefix andassociated network configuration information, such as the configurationdata 402 or 404, from an external network, such as the external networks302 or 304, respectively. The border router 202 creates a provisioningdomain that includes the received address prefix and the associatedconfiguration information, along with a unique identifier for theprovisioning domain.

At block 1006, the created provisioning domain is forwarded to a leaderdevice of the mesh network 100. At block 1008, the provisioning domainis propagated from the leader to the mesh network 100. For example, theborder router 202 forwards the created provisioning domain over the meshnetwork 100 to a leader device 210, which is effective to enable theleader device 210 to store the provisioning domain. The leader device210 propagates the received provisioning domain to the routers 102 andthe router-eligible end devices 104 in the mesh network 100.Alternatively, the border router 202 forwards the configuration data 402or 404 to a leader device 210, which creates the provisioning domain andassigns the unique identifier to the provisioning domain, beforepropagating the provisioning domain to the mesh network 100.

At block 1010, a packet is addressed using the information in thepropagated provisioning domain. At block 1012, the addressed packet isforwarded over the mesh network. For example, a router 102 determines,for a destination of a data packet (e.g., from an RLOC lookup), to usethe address prefix in the provisioning domain to form a DestinationAddress for the data packet. The router 102 forwards the data packet ona route using the Destination Address.

FIG. 11 illustrates example method(s) 1100 of mesh network addressing asgenerally related to addressing and routing packets in a mesh network.The order in which the method blocks are described are not intended tobe construed as a limitation, and any number of the described methodblocks can be combined in any order to implement a method, or analternate method.

At block 1102, packet is received for delivery to a network destination.At block 1104, it is determined if the network destination is on themesh network. For example, a router 102 receives a packet (e.g., from anapplication executing on the router 102 or from a child end device 106of the router 102) to deliver to a network destination. The router 102determines that the network destination is on the mesh network, such asthe network destination being an Endpoint Identifier (EID) thatindicates that the network destination is on the mesh network, but isnot a routable address.

At block 1106, a Routing Locator (RLOC) associated with the networkdestination is discovered. At 1108, the packet is forwarded using aroutable network address, from the RLOC, as a Destination Address. Forexample, the router 102 discovers an RLOC for the EID, such as by anRLOC lookup of RLOCs cached in the router 102 or by performing anaddress query. The router 102 uses the routable network address, whichis mapped from the EID in the RLOC, to form a Destination Address (suchas an IPv6 Destination Address) for the packet. The router 102 forwardsthe packet on the mesh network 100 based on the Destination Address.

FIG. 12 illustrates example method(s) 1200 of mesh network addressing asgenerally related to addressing and routing for end devices in a meshnetwork. The order in which the method blocks are described are notintended to be construed as a limitation, and any number of thedescribed method blocks can be combined in any order to implement amethod, or an alternate method.

At block 1202, an address of an end device is registered. At 1204, aChild Identifier is assigned to the end device. At block 1206, andEndpoint Identifier (EID) is encoded from the Child Identifier and aRouter Identifier into a Routing Locator (RLOC). For example, an addressfor a child end device 106 is registered at a parent router 102. Theparent router 102 assigns a Child Identifier to the child end device106. The parent router 102 encodes the Child Identifier and a RouterIdentifier of the parent router 102 into a Routing Locator for the childend device.

At block 1208, an address query for the end device is received. At 1210,a response to the address query is made on behalf of the end device. Forexample, the parent router 102 receives an address query over the meshnetwork 100 that includes the encoded EID for the child end device 106.The parent router 102 responds to the address query, on behalf of thechild end device, with the RLOC for the child end device.

At block 1212, data packets for the end device are received, at 1214,the received data packets for the end device are stored, and at 1216,the stored data packets are forwarded to the end device. For example,the parent router 102 receives, on behalf of the child end device 106,data packets that are addressed to the child end device 106. Receivingthe data packets on behalf of the child end device 106 may includeperforming any networking protocols, such as acknowledging the receiveddata packets, assembling the received data packets into a message,requesting retransmission of missing packets, and the like. The parentrouter 102 stores the received data packets, such as during the periodof time that the child end device 106 sleeps. The parent router 102forwards the stored data packets to the child end device 106, such aswhen the child end device 106 ends a period of sleep and reestablishesmesh network communication with the parent router 102.

FIG. 13 illustrates example method(s) 1300 of mesh network addressing asgenerally related to address-based prioritizing of routing in a meshnetwork. The order in which the method blocks are described are notintended to be construed as a limitation, and any number of thedescribed method blocks can be combined in any order to implement amethod, or an alternate method.

At block 1302, a first preference value is assigned to a first addressprefix. At block 1304, a second preference value is assigned to a secondaddress prefix. For example, a first preference value is assigned in afirst provisioning domain for a first address prefix. A secondpreference value is assigned in a second provisioning domain for asecond address prefix. The preference values may be set in any suitablemanner, such as by a network administrator, using default values, andthe like.

At block 1306, the address prefixes and associated preference values arepropagated to the mesh network. For example, a leader device 210 of themesh network 100 propagates the first provisioning domain and the secondprovisioning domain, as a part of network data, to the routers 102 andthe router-eligible devices 104 in the mesh network 100.

At 1308, based on the preference values, determine an address prefix touse to address a packet to a destination address. For example, a router102 uses the first and second preference values in the propagatedprovisioning domains to determine whether to use the first addressprefix or the second address prefix for the Destination Address (e.g.,IPv6 Destination Address), to address and forward the packet over themesh network 100.

FIG. 14 illustrates example method(s) 1400 of mesh network addressing asgenerally related to duplicate address detection in a mesh network. Theorder in which the method blocks are described are not intended to beconstrued as a limitation, and any number of the described method blockscan be combined in any order to implement a method, or an alternatemethod.

At block 1402, an address identifier is generated, where the addressidentifier is associated with an end device attached to a router devicefor communication in a mesh network, the address identifier beingmaintained by the router device as a tuple state of the end device. Forexample, an end device 518 generates an address identifier when the enddevice 106 attaches to a router device 102 in the mesh network 100(e.g., the end device is communicatively coupled to the router devicefor wireless communication in the mesh network). The end device stores adevice state in the router that attaches the end device in the meshnetwork. In implementations, the stored device state is a tuple state(e.g., a list of elements) that includes an address, a random value, anda lifetime. The address is selected or generated by the end device, therandom value is generated by the end device, and the lifetime indicateshow long the router will maintain the state for the attached end device.In other implementations, the address identifier includes an address andtime-based information associated with the end device. The time-basedinformation includes a time attached (“Ta”) when an end device 106attaches to a router device 102, and includes a last transaction time(“Tt”) when an end device 106 last communicates with the attached routerdevice 102.

At block 1404, an address query is initiated requesting that meshnetwork devices in the mesh network having a designated address respondwith the tuple state that corresponds to the designated address. Forexample, an end device or a router device initiates a multicast addressquery to all of the other mesh network devices in the mesh network 100,requesting that any of the other mesh network devices with the sameaddress respond back with the corresponding tuple state that is storedfor that same address. In other implementations, an end device or arouter device initiates a multicast address query to all of the othermesh network devices in the mesh network 100, requesting that any of theother mesh network devices with the same address respond back with thecorresponding time-based information that is stored for that sameaddress.

At block 1406, the tuple state of a mesh network device having thedesignated address is received in response to the address query. Forexample, the end device or the router device receives back the tuplestates that correspond to the other mesh network devices (e.g., theother end devices) that have the same designated address. In otherimplementations, the end device or the router device receives back thetime-based information that corresponds to the other mesh networkdevices (e.g., the other end devices) that have the same designatedaddress.

At block 1408, information of the address identifier in the tuple stateof the mesh network device is compared to information in the tuple stateof the end device. For example, the end device or the router devicecompares the address identifier information for the end device with theaddress identifier information of other mesh network devices having thesame address to determine duplicate device addresses. Alternatively, theend device or router device compares the time-based information in thetuple state of other mesh network devices to the time-based informationin the tuple state of the end device to detect a duplicate address ofthe mesh network device.

At block 1410, a duplicate address of the mesh network device isdetected based the comparison of the information of the addressidentifier that is maintained as part of the tuple state of the meshnetwork device. For example, the end device or the router device thatinitiates the multicast address query detects a duplicate address of amesh network device based on the random value that is maintained as partof the tuple state of the mesh network device, or in otherimplementations, based on the time-based information that corresponds tothe mesh network device.

At block 1412, one or more of the mesh network devices that have theduplicate address are directed to generate a new address. For example,the end device or the router device that detects the duplicate addressdirects one or more of the mesh network devices that have the duplicateaddress to generate a new address.

FIG. 15 illustrates an example environment 1500 in which the meshnetwork 100 (as described with reference to FIG. 1), and embodiments ofmesh network addressing can be implemented. Generally, the environment1500 includes the mesh network 100 implemented as part of a smart-homeor other type of structure with any number and type of mesh networkdevices that are configured for communication in a mesh network. Forexample, the mesh network devices can include a thermostat 1502, hazarddetectors 1504 (e.g., for smoke and/or carbon monoxide), cameras 1506(e.g., indoor and outdoor), lighting units 1508 (e.g., indoor andoutdoor), and any other types of mesh network devices 1510 that areimplemented inside and/or outside of a structure 1512 (e.g., in asmart-home environment). In this example, the mesh network devices canalso include any of the previously described devices, such as a borderrouter 202, a router 102, a router-eligible end device 104, and/or anend device 106.

In the environment 1500, any number of the mesh network devices can beimplemented for wireless interconnection to wirelessly communicate andinteract with each other. The mesh network devices are modular,intelligent, multi-sensing, network-connected devices, which canintegrate seamlessly with each other and/or with a central server or acloud-computing system to provide any of a variety of useful smart-homeobjectives and implementations. An example of a mesh network device thatcan be implemented as any of the devices described herein is shown anddescribed with reference to FIG. 16.

In implementations, the thermostat 1502 may include a Nest® LearningThermostat that detects ambient climate characteristics (e.g.,temperature and/or humidity) and controls a HVAC system in thesmart-home environment. The learning thermostat 1502 and other smartdevices “learn” by capturing occupant settings to the devices. Forexample, the thermostat learns preferred temperature set-points formornings and evenings, and when the occupants of the structure areasleep or awake, as well as when the occupants are typically away or athome.

A hazard detector 1504 can be implemented to detect the presence of ahazardous substance or a substance indicative of a hazardous substance(e.g., smoke, fire, or carbon monoxide). In examples of wirelessinterconnection, a hazard detector 1504 may detect the presence ofsmoke, indicating a fire in the structure, in which case the hazarddetector that first detects the smoke can broadcast a low-power wake-upsignal to all of the connected mesh network devices. The other hazarddetectors 1504 can then receive the broadcast wake-up signal andinitiate a high-power state for hazard detection and to receive wirelesscommunications of alert messages. Further, the lighting units 1508 canreceive the broadcast wake-up signal and activate in the region of thedetected hazard to illuminate and identify the problem area. In anotherexample, the lighting units 1508 may activate in one illumination colorto indicate a problem area or region in the structure, such as for adetected fire or break-in, and activate in a different illuminationcolor to indicate safe regions and/or escape routes out of thestructure. In another example, a doorbell or door monitoring system mayinclude LEDs that flash yellow (or other color) when a presence isdetected, or flash red if an alarm is activated.

In various configurations, the mesh network devices 1510 can include anentryway interface device that functions in coordination with anetwork-connected door lock system, and that detects and responds to aperson's approach to or departure from a location, such as an outer doorof the structure 1512. The entryway interface device can interact withthe other mesh network devices based on whether someone has approachedor entered the smart-home environment. An entryway interface device cancontrol doorbell functionality, announce the approach or departure of aperson via audio or visual means, and control settings on a securitysystem, such as to activate or deactivate the security system whenoccupants come and go. The mesh network devices 1510 can also includeother sensors and detectors, such as to detect ambient lightingconditions, detect room-occupancy states (e.g., with an occupancysensor), and control a power and/or dim state of one or more lights. Insome instances, the sensors and/or detectors may also control a powerstate or speed of a fan, such as a ceiling fan. Further, the sensorsand/or detectors may detect occupancy in a room or enclosure, andcontrol the supply of power to electrical outlets or devices, such as ifa room or the structure is unoccupied.

The mesh network devices 1510 may also include connected appliancesand/or controlled systems, such as refrigerators, stoves and ovens,washers, dryers, air conditioners, pool heaters, irrigation systems,security systems, and so forth, as well as other electronic andcomputing devices, such as televisions, entertainment systems,computers, intercom systems, garage-door openers, ceiling fans, controlpanels, and the like. When plugged in, an appliance, device, or systemcan announce itself to the mesh network as described above, and can beautomatically integrated with the controls and devices of the meshnetwork, such as in the smart-home. It should be noted that the meshnetwork devices 1510 may include devices physically located outside ofthe structure, but within wireless communication range, such as a devicecontrolling a swimming pool heater or an irrigation system.

As described above, the mesh network 100 includes a border router 202that interfaces for communication with an external network, outside themesh network 100. The border router 202 connects to an access point 204,which connects to the communication network 206, such as the Internet. Acloud service 208, which is connected via the communication network 206,provides services related to and/or using the devices within the meshnetwork 100. By way of example, the cloud service 208 can includeapplications for connecting end user devices, such as smart phones,tablets, and the like, to devices in the mesh network, processing andpresenting data acquired in the mesh network 100 to end users, linkingdevices in one or more mesh networks 100 to user accounts of the cloudservice 208, provisioning and updating devices in the mesh network 100,and so forth. For example, a user can control the thermostat 1502 andother mesh network devices in the smart-home environment using anetwork-connected computer or portable device, such as a mobile phone ortablet device. Further, the mesh network devices can communicateinformation to any central server or cloud-computing system via theborder router 202 and the access point 204. The data communications canbe carried out using any of a variety of custom or standard wirelessprotocols (e.g., Wi-Fi, ZigBee for low power, 6LoWPAN, etc.) and/or byusing any of a variety of custom or standard wired protocols (CAT6Ethernet, HomePlug, etc.).

Any of the mesh network devices in the mesh network 100 can serve aslow-power and communication nodes to create the mesh network 100 in thesmart-home environment. Individual low-power nodes of the network canregularly send out messages regarding what they are sensing, and theother low-powered nodes in the environment—in addition to sending outtheir own messages—can repeat the messages, thereby communicating themessages from node to node (i.e., from device to device) throughout themesh network. The mesh network devices can be implemented to conservepower, particularly when battery-powered, utilizing low-poweredcommunication protocols to receive the messages, translate the messagesto other communication protocols, and send the translated messages toother nodes and/or to a central server or cloud-computing system. Forexample, an occupancy and/or ambient light sensor can detect an occupantin a room as well as measure the ambient light, and activate the lightsource when the ambient light sensor detects that the room is dark andwhen the occupancy sensor detects that someone is in the room. Further,the sensor can include a low-power wireless communication chip (e.g., aZigBee chip) that regularly sends out messages regarding the occupancyof the room and the amount of light in the room, including instantaneousmessages coincident with the occupancy sensor detecting the presence ofa person in the room. As mentioned above, these messages may be sentwirelessly, using the mesh network, from node to node (i.e., smartdevice to smart device) within the smart-home environment as well asover the Internet to a central server or cloud-computing system.

In other configurations, various ones of the mesh network devices canfunction as “tripwires” for an alarm system in the smart-homeenvironment. For example, in the event a perpetrator circumventsdetection by alarm sensors located at windows, doors, and other entrypoints of the structure or environment, the alarm could still betriggered by receiving an occupancy, motion, heat, sound, etc. messagefrom one or more of the low-powered mesh nodes in the mesh network. Inother implementations, the mesh network can be used to automaticallyturn on and off the lighting units 1508 as a person transitions fromroom to room in the structure. For example, the mesh network devices candetect the person's movement through the structure and communicatecorresponding messages via the nodes of the mesh network. Using themessages that indicate which rooms are occupied, other mesh networkdevices that receive the messages can activate and/or deactivateaccordingly. As referred to above, the mesh network can also be utilizedto provide exit lighting in the event of an emergency, such as byturning on the appropriate lighting units 1508 that lead to a safe exit.The light units 1508 may also be turned-on to indicate the directionalong an exit route that a person should travel to safely exit thestructure.

The various mesh network devices may also be implemented to integrateand communicate with wearable computing devices, such as may be used toidentify and locate an occupant of the structure, and adjust thetemperature, lighting, sound system, and the like accordingly. In otherimplementations, RFID sensing (e.g., a person having an RFID bracelet,necklace, or key fob), synthetic vision techniques (e.g., video camerasand face recognition processors), audio techniques (e.g., voice, soundpattern, vibration pattern recognition), ultrasound sensing/imagingtechniques, and infrared or near-field communication (NFC) techniques(e.g., a person wearing an infrared or NFC-capable smartphone), alongwith rules-based inference engines or artificial intelligence techniquesthat draw useful conclusions from the sensed information as to thelocation of an occupant in the structure or environment.

In other implementations, personal comfort-area networks, personalhealth-area networks, personal safety-area networks, and/or other suchhuman-facing functionalities of service robots can be enhanced bylogical integration with other mesh network devices and sensors in theenvironment according to rules-based inferencing techniques orartificial intelligence techniques for achieving better performance ofthese functionalities. In an example relating to a personal health-area,the system can detect whether a household pet is moving toward thecurrent location of an occupant (e.g., using any of the mesh networkdevices and sensors), along with rules-based inferencing and artificialintelligence techniques. Similarly, a hazard detector service robot canbe notified that the temperature and humidity levels are rising in akitchen, and temporarily raise a hazard detection threshold, such as asmoke detection threshold, under an inference that any small increasesin ambient smoke levels will most likely be due to cooking activity andnot due to a genuinely hazardous condition. Any service robot that isconfigured for any type of monitoring, detecting, and/or servicing canbe implemented as a mesh node device on the mesh network, conforming tothe wireless interconnection protocols for communicating on the meshnetwork.

The mesh network devices 1510 may also include a smart alarm clock foreach of the individual occupants of the structure in the smart-homeenvironment. For example, an occupant can customize and set an alarmdevice for a wake time, such as for the next day or week. Artificialintelligence can be used to consider occupant responses to the alarmswhen they go off and make inferences about preferred sleep patterns overtime. An individual occupant can then be tracked in the mesh networkbased on a unique signature of the person, which is determined based ondata obtained from sensors located in the mesh network devices, such assensors that include ultrasonic sensors, passive IR sensors, and thelike. The unique signature of an occupant can be based on a combinationof patterns of movement, voice, height, size, etc., as well as usingfacial recognition techniques.

In an example of wireless interconnection, the wake time for anindividual can be associated with the thermostat 1502 to control theHVAC system in an efficient manner so as to pre-heat or cool thestructure to desired sleeping and awake temperature settings. Thepreferred settings can be learned over time, such as by capturing thetemperatures set in the thermostat before the person goes to sleep andupon waking up. Collected data may also include biometric indications ofa person, such as breathing patterns, heart rate, movement, etc., fromwhich inferences are made based on this data in combination with datathat indicates when the person actually wakes up. Other mesh networkdevices can use the data to provide other smart-home objectives, such asadjusting the thermostat 1502 so as to pre-heat or cool the environmentto a desired setting, and turning-on or turning-off the lights 1508.

In implementations, the mesh network devices can also be utilized forsound, vibration, and/or motion sensing such as to detect running waterand determine inferences about water usage in a smart-home environmentbased on algorithms and mapping of the water usage and consumption. Thiscan be used to determine a signature or fingerprint of each water sourcein the home, and is also referred to as “audio fingerprinting waterusage.” Similarly, the mesh network devices can be utilized to detectthe subtle sound, vibration, and/or motion of unwanted pests, such asmice and other rodents, as well as by termites, cockroaches, and otherinsects. The system can then notify an occupant of the suspected pestsin the environment, such as with warning messages to help facilitateearly detection and prevention.

In additional scenarios, the techniques described herein for a meshnetwork and the mesh network devices can be implemented for third-partyproducts and devices that are configurable and/or addressable to joinand operate in the mesh network, and in the example environment 1500.Various examples of third-party products and devices that can beimplemented in the example environment for wireless interconnection towirelessly communicate and interact with each other are describedfollowing. As noted above, the third-party products and devices can bedesigned and implemented to integrate seamlessly with each other and/orwith a central server or a cloud-computing system to provide any of avariety of useful objectives and implementations.

Appliance devices, such as the major home appliances (e.g., washer,dryer, oven and range, dishwasher, refrigerator, and the like), canoperate in a mesh network, such as to refresh the laundry when the houseis placed in a HOME state, or an appliance can enter into an economymode when the house is placed in an AWAY state (e.g., all persons haveleft the structure). In an emergency, such as a fire or naturaldisaster, or based on detected weather conditions that may lead to anemergency, an appliance that uses natural gas (e.g., a stove and waterheater) may be disabled. In an AWAY state of the house, a notificationmay be communicated to a mobile device of a user that the oven is on, orto report the status of any other appliance, such as the washer status,the refrigerator has stopped running, the furnace is running more thanexpected, and the like. Further, a notice that the furnace is runningmore than expected may also be an indication that a door or window hasbeen left open to a cold exterior environment, or has been broken open.If a user does not respond to an appliance notification, such as anotice that the oven is on, then the system may auto turn the oven off.

An appliance (e.g., washer and dryer) may enter into a quiet mode in aHOME state of the house. If the house is in an AWAY state and a faucetis turned on for hot water, then the system can initiate the house HOMEstate. Further appliance use can provide an indication of occupancy aswell as the approximate number of occupants. If the occupants of astructure are away for a designated number of hours or days, the systemcan communicate a request to enter into an eco-mode, which a user maythen approve remotely on the mobile device. Additionally, the system mayinitiate a warning if an appliance is activated during RHR (conservingenergy during peak use times), reduce hot water flow during RHR,activate the central heating and cooling system to push or pull airduring an emergency or if an alarm is activated, adjust the thermostator set some other mesh network device set point based on the oventemperature or the oven being on, and communicate a report of waterand/or electrical use to the mobile device of the user.

Doors and windows that have blinds, shades, or other types of coverings,or that may be electrochromic, can be automatically activated, such asto lower the shades during evening hours or in a house AWAY state. Theshades may also be closed to lower the temperature rather than turningon the HVAC, or if direct sunlight is detected. Alternatively, theshades can open if an alarm goes off, or close if RHR. Similarly,electric fans can be turned on if RHR, or a fan can be reversed ifheating the structure or environment. A fan state, speed, or othercharacteristic can be used as a basis to change another mesh networkdevice set point. Further, energy usage data can be communicated to themobile device of the user. If the HVAC unit is heating or cooling, a fancan be operated in a destratification (reverse) mode. If the house isset to an AWAY mode, a fan may be turned-on periodically and/oractivated for the same limited duration as the HVAC fan. During analarm, any externally vented fans can be activated. The HVAC may havemultiple sensor inputs to determine the occupancy of a home environmentfor customized temperature control.

Electric vehicle charging can be DR-based, stopped if a hazard isdetected, or a user given the option to delay charging during RHR.Additionally, energy use data for electric vehicle charging can beuploaded, and the system can learn a schedule, such as to preconditionthe vehicle for use based on when a user typically leaves and takes thevehicle.

Home lighting can be set to turn on or off based on the house HOME modeor AWAY mode, and motion sensing can be used to determine or set thehouse HOME mode. If the house is in the AWAY mode, the system can turnthe lights on and off randomly. Less efficient lights can be used lessoften. Home “scenes” can be created with ambience and lighting, such asa dinner scene, movie-watching scene, romantic scene, and the like. Asnoted above, the lights may illuminate the color red to indicate ahazard or emergency, and then change to a bright white to illuminate anexit path out of the structure. The lights can also be turned off ordimmed for RHR, turned on or off based on the temperature, and/or havedifferent start, during, and end colors.

Motion sensing can be integrated to switch on lights and activate theHOME mode. Light activation can be monitored to detect occupancy, and ifthere are no detected occupants, a message can be communicatedrequesting to deactivate the HVAC. With respect to camera integrationand imaging, the light brightness may be increased for camera imaging ifmotion is detected. If a light breaks, a camera can zoom on the light.The lights can be adjusted based on detected users, user profiles,and/or to adjust the lighting or temperature. A lighting schedule can belearned for the house HOME mode and AWAY mode, and light actuationsindicate or activate the HOME mode. If an alarm is activated, then allof the outdoor lights can be activated and/or illuminate differentcolors, such as the swimming pool lights, flood lights and other outdoorlights. The lights may also be turned on steady, flashing, random, or insome pattern that indicates a warning or alarm. If an alarm isactivated, the lights can illuminate heads-up status colors, such asyellow as a caution or red as a warning. A subset of the lights canilluminate to indicate the location and presence of an intruder. Thelights can also turn on to illuminate a safe exit path out of thestructure, such as based on the home environment sensor determinations.

If a door lock is unlocked, the house HOME mode can be initiated, andsimilarly, if an occupant leaves and locks the door, the house AWAY modecan be set. The status of the locks can be polled by the system lessfrequently if an occupant is present and in the house HOME mode, andpolled more often in the house AWAY mode. Further, if a low-batterycondition is encountered and the house is in the AWAY mode, the featurecan hibernate to conserve battery power of the lock-based mesh networkdevice. A lock-based device can be designed to operate based on a pincode plus BLE authentication, and a lock or unlock state can be used foroccupancy determinations, and/or combined with other sensor informationfor the occupancy determinations. An unexpected door unlock can initiatean alarm, such as if a user is on vacation, and unlock messages can becommunicated to the mobile device of the user. Further, when the userarrives or leaves, notifications can be initiated for display on thescreen of the mobile device.

Wireless sensor devices of all types can be implemented to operate inthe mesh network and provide temperature and other readings to a userand any of the other mesh network devices. From a services standpoint,the house AWAY mode and HVAC settings may be initiated when a userchecks-in somewhere else, which may also be based on a location servicesinput and/or a calendar event. The system may also be implemented forreservation, alarm interactions, and/or voice control of the thermostator any of the other mesh network devices. Guests of a home may beallowed to control some features and aspects of the system based onproximity. Sensors may also facilitate temporary camera access andtemporary key access for guests. Further, a guest's own home may becontrolled and an AWAY mode initiated based on occupancy detected inanother structure that includes a mesh network environment. A room mayalso be automatically photographed before guest arrival and after theguest leaves, and too many guests can also be detected.

Solar power devices can communicate in the mesh network to control athermostat, charge an electric vehicle, and/or activate appliances basedon the weather forecast and stored charge. Switches and plugs can beimplemented, along with occupancy sensors, for many of the featuresdescribed herein, such as to activate an alarm device, deactivatedevices during RHR (Rush Hour Rewards), communicate energy consumptionnotifications, for user detection, etc. A VOIP system can be integratedto forward calls for a user, such as in the house AWAY mode or to call911 emergency if an alarm is activated. The VOIP system can also monitorfor scheduled HOME mode times and initiate a call to the user if thehouse HOME state is not entered.

Audio and video features can be implemented to turn down televisions andaudio equipment during emergency, hazard, and alarm situations, and turnon or off devices in the house HOME state and house AWAY state. An alarmcan also be propagated (e.g., rebroadcast) over the mesh network devicesas a message at a particular decibel level. The audio can also beswitched based on the house state, and IR sensors and application usagecan indicate the house HOME state. An audio system can be used topropagate an audio alarm over the speakers of the system and/or a soundcan be played if a camera detects an intruder. The audio system, as wellas any of the mesh network devices, can be turned on or off based on anETA of a person arriving home.

An automobile can be integrated generally as a mesh network device inthe example environment, and communicate the ETA of the person arrivinghome. The house HOME state and house AWAY state can be initiated basedon the provided ETA, when reversing and leaving structure, or when theETA is based on a threshold, including use of thermal transition time towarm or cool the structure. Features of geo-fence can also beincorporated for use in the mesh network. Similar to the mobile deviceof the user, the automobile can display in-vehicle status of any of themesh network devices, and/or the mesh network overall, to include cameraimages and video feeds. The automobile (vehicle) can be preconditionedfor use based on the thermostat setting in the house so that the userenvironment temperature is maintained as the user transitions from thehouse to the vehicle, or vice-versa. Micro-location control of thestructure in the example environment can be used to actuate entrypoints, such as to open the garage door on arrival, but not unlock anyother entry doors of the structure (or any other combination thereof).The opening and closing of the garage door can also be used to initiateeither of the house HOME state or the house AWAY state. The garage doorcan also be opened or closed based on detecting that the temperature istoo hot or cold. The garage door can be opened or closed based onalarms, such as for smoke or CO, and if forced open, the system canactivate cameras.

Personal health and monitoring devices can be incorporated in the meshnetwork and example environment 1500. Further, wearable devices can alsobe integrated as any type of mesh network device that is operable toimplement many of the various features described herein. For example, abed cover or wearable device may detect a user sleeping and thethermostat state for the room is adjusted to accommodate the userpreferences and/or profile. A wake-up temperature can also be based onbed cover motion or a wearable device, and the house HOME stateinitiated, to include lights, music, television, etc. A baby's statusand/or temperature can be communicated to the mobile device of the user,a camera turned on based on the baby status, and a baby monitor vibratesand/or escalates an alarm activation in the system, such as if the babymonitor leaves a geofence, the alarm can be activated. Mesh networkdevices for baby needs may be more stringent, such as to accommodateless temperature drift for baby settings. A user's body temperature canbe determined by a wearable device and the HVAC adjusted accordingly. Apet wearable device for pet detection can be used to reduce camera falsetriggers.

Alternatively or in addition to the many camera features listed above,one or more of the cameras can be used to initiate notifications if thehouse AWAY state is set. A camera can activate and deactivate based oneither a manual or automatic switching between house HOME state andhouse AWAY state. If an alarm is activated, an image clip is sent as anotification, such as to the mobile device of the user, and a videohistory may also be included. When a doorbell or door knock is detected(e.g., by microphone, sensor contact, etc.) a camera is turned-on, animage or video is captured, and the image or video is communicated forviewing, either on a display device in the house or on the mobile deviceof the user. If the user leaves the structure, a wearable device caninitiate turning on a camera and upon returning, initiate turning offthe camera. Similarly, if a user falls asleep, the wearable device candetect the sleeping and initiate turning on a camera and upon waking,initiate turning off the camera. If motion is detected in a zone, andthe structure is unoccupied (e.g., house AWAY state) the system caninitiate to simulate as if someone is in the structure by turning onmusic, lights, etc. Similarly, if no motion is detected for an extendedtime, the system can initiate to simulate as if someone is home. Facialrecognition can be implemented to support user preferences and/orprofiles. Generally, a video clip, audio recording, or image can becaptured and/or generated for any event that is detected in the exampleenvironment of the mesh network. Further, third-party access points intothe mesh network provide notification and subsequent links to relevantcameras.

The shower and faucets can be controlled as mesh network devices in theexample environment. For example, during an alarm, the shower or afaucet that is in use can be changed to run cold water, or an LED ringaround the shower head can be activated to indicate an alarm. Similarly,for a person at the door, the shower may turn cold and/or LED lightsactivated to notify the user. Generally for home automation, the meshnetwork devices can be controlled based on the thermostat, alarms,motions, detected audio, hazards, and other properties and features. ForRHR, a fan can be turned on, the window shades closed, and the lightsturned-off. A scene can be set, to include setting the temperature,window shades, music, etc. An alarm clock can announce or alarm detectedcamera motion events, and open an audio feed. The alarm clock can beused to facilitate many of the features, such as to announce alarms,programming sleep and awake temperatures, lighting, and alarms, and toannounce RHR.

Remote control devices can also be implemented as mesh network devicesto control and activate any of the mesh network devices and featuresdescribed herein, such as to turn down audio and video when a hazardcondition is detected or an alarm is activated. Remote control devicesmay also be used for audio recordings, to answer system questions, andannounce RHR. Features and aspects of insurance protection may also beincorporated, such as to automatically mail batteries for the meshnetwork devices when a low-battery condition is detected, particularlyin the smoke and CO detectors. An insurance carrier may also be notifiedwhen an alarm condition is activated, so that support can be provided,such as after a fire or break-in.

Other third-party products and devices that can be designed to operatein a mesh network and/or in the example environment 1500 can includebaby and pet monitoring devices, other Internet-of-things (IoT) devices,software stack providers, RF modules and development kits, access pointsand hub devices, load control switches, security-based devices, RFIDtags and beacon devices, drones and bot devices, energy storageequipment and devices, hobby devices, metering units and devices, PERS,weather station devices, utilities, and/or for any other type ofproducts and mesh network devices. For example, swimming pool heatersand pumps can be turned-off as non-essential pool elements when thehouse is in the AWAY mode or during RHR to conserve energy. Forcloud-based features that are associated with the mesh network, ISP/MSOfeatures can be implemented, such as to provide that a user can view thethermostat state (or state of any mesh network devices) at a glance. Thesprinkler system may be activated and turned-on if an intruder alarm orfire alarm is activated. A water usage message can also be communicatedto the mobile device of the user. A vacuum system can be set to cleanwhen the house AWAY state is initiated.

FIG. 16 illustrates an example mesh network device 1600 that can beimplemented as any of the mesh network devices in a mesh network inaccordance with one or more embodiments of mesh network addressing asdescribed herein. The device 1600 can be integrated with electroniccircuitry, microprocessors, memory, input output (I/O) logic control,communication interfaces and components, as well as other hardware,firmware, and/or software to implement the device in a mesh network.Further, the mesh network device 1600 can be implemented with variouscomponents, such as with any number and combination of differentcomponents as further described with reference to the example deviceshown in FIG. 17.

In this example, the mesh network device 1600 includes a low-powermicroprocessor 1602 and a high-power microprocessor 1604 (e.g.,microcontrollers or digital signal processors) that process executableinstructions. The device also includes an input-output (I/O) logiccontrol 1606 (e.g., to include electronic circuitry). Themicroprocessors can include components of an integrated circuit,programmable logic device, a logic device formed using one or moresemiconductors, and other implementations in silicon and/or hardware,such as a processor and memory system implemented as a system-on-chip(SoC). Alternatively or in addition, the device can be implemented withany one or combination of software, hardware, firmware, or fixed logiccircuitry that may be implemented with processing and control circuits.The low-power microprocessor 1602 and the high-power microprocessor 1604can also support one or more different device functionalities of thedevice. For example, the high-power microprocessor 1604 may executecomputationally intensive operations, whereas the low-powermicroprocessor 1602 may manage less complex processes such as detectinga hazard or temperature from one or more sensors 1608. The low-powerprocessor 1602 may also wake or initialize the high-power processor 1604for computationally intensive processes.

The one or more sensors 1608 can be implemented to detect variousproperties such as acceleration, temperature, humidity, water, suppliedpower, proximity, external motion, device motion, sound signals,ultrasound signals, light signals, fire, smoke, carbon monoxide,global-positioning-satellite (GPS) signals, radio-frequency (RF), otherelectromagnetic signals or fields, or the like. As such, the sensors1608 may include any one or a combination of temperature sensors,humidity sensors, hazard-related sensors, other environmental sensors,accelerometers, microphones, optical sensors up to and including cameras(e.g., charged coupled-device or video cameras, active or passiveradiation sensors, GPS receivers, and radio frequency identificationdetectors. In implementations, the mesh network device 1600 may includeone or more primary sensors, as well as one or more secondary sensors,such as primary sensors that sense data central to the core operation ofthe device (e.g., sensing a temperature in a thermostat or sensing smokein a smoke detector), while the secondary sensors may sense other typesof data (e.g., motion, light or sound), which can be used forenergy-efficiency objectives or smart-operation objectives.

The mesh network device 1600 includes a memory device controller 1610and a memory device 1612, such as any type of a nonvolatile memoryand/or other suitable electronic data storage device. The mesh networkdevice 1600 can also include various firmware and/or software, such asan operating system 1614 that is maintained as computer executableinstructions by the memory and executed by a microprocessor. The devicesoftware may also include an addressing application 1616 that implementsembodiments of mesh network addressing. The mesh network device 1600also includes a device interface 1618 to interface with another deviceor peripheral component, and includes an integrated data bus 1620 thatcouples the various components of the mesh network device for datacommunication between the components. The data bus in the mesh networkdevice may also be implemented as any one or a combination of differentbus structures and/or bus architectures.

The device interface 1618 may receive input from a user and/or provideinformation to the user (e.g., as a user interface), and a receivedinput can be used to determine a setting. The device interface 1618 mayalso include mechanical or virtual components that respond to a userinput. For example, the user can mechanically move a sliding orrotatable component, or the motion along a touchpad may be detected, andsuch motions may correspond to a setting adjustment of the device.Physical and virtual movable user-interface components can allow theuser to set a setting along a portion of an apparent continuum. Thedevice interface 1618 may also receive inputs from any number ofperipherals, such as buttons, a keypad, a switch, a microphone, and animager (e.g., a camera device).

The mesh network device 1600 can include network interfaces 1622, suchas a mesh network interface for communication with other mesh networkdevices in a mesh network, and an external network interface for networkcommunication, such as via the Internet. The mesh network device 1600also includes wireless radio systems 1624 for wireless communicationwith other mesh network devices via the mesh network interface and formultiple, different wireless communications systems. The wireless radiosystems 1624 may include Wi-Fi, Bluetooth™, Mobile Broadband, and/orpoint-to-point IEEE 802.15.4. Each of the different radio systems caninclude a radio device, antenna, and chipset that is implemented for aparticular wireless communications technology. The mesh network device1600 also includes a power source 1626, such as a battery and/or toconnect the device to line voltage. An AC power source may also be usedto charge the battery of the device.

FIG. 17 illustrates an example system 1700 that includes an exampledevice 1702, which can be implemented as any of the mesh network devicesthat implement embodiments of mesh network addressing as described withreference to the previous FIGS. 1-16. The example device 1702 may be anytype of computing device, client device, mobile phone, tablet,communication, entertainment, gaming, media playback, and/or other typeof device. Further, the example device 1702 may be implemented as anyother type of mesh network device that is configured for communicationon a mesh network, such as a thermostat, hazard detector, camera, lightunit, router, border router, joiner router, joining device, end device,leader, access point, and/or other mesh network devices.

The device 1702 includes communication devices 1704 that enable wiredand/or wireless communication of device data 1706, such as data that iscommunicated between the devices in a mesh network, data that is beingreceived, data scheduled for broadcast, data packets of the data, datathat is synched between the devices, etc. The device data can includeany type of communication data, as well as audio, video, and/or imagedata that is generated by applications executing on the device. Thecommunication devices 1704 can also include transceivers for cellularphone communication and/or for network data communication.

The device 1702 also includes input/output (I/O) interfaces 1708, suchas data network interfaces that provide connection and/or communicationlinks between the device, data networks (e.g., a mesh network, externalnetwork, etc.), and other devices. The I/O interfaces can be used tocouple the device to any type of components, peripherals, and/oraccessory devices. The I/O interfaces also include data input ports viawhich any type of data, media content, and/or inputs can be received,such as user inputs to the device, as well as any type of communicationdata, as well as audio, video, and/or image data received from anycontent and/or data source.

The device 1702 includes a processing system 1710 that may beimplemented at least partially in hardware, such as with any type ofmicroprocessors, controllers, and the like that process executableinstructions. The processing system can include components of anintegrated circuit, programmable logic device, a logic device formedusing one or more semiconductors, and other implementations in siliconand/or hardware, such as a processor and memory system implemented as asystem-on-chip (SoC). Alternatively or in addition, the device can beimplemented with any one or combination of software, hardware, firmware,or fixed logic circuitry that may be implemented with processing andcontrol circuits. The device 1702 may further include any type of asystem bus or other data and command transfer system that couples thevarious components within the device. A system bus can include any oneor combination of different bus structures and architectures, as well ascontrol and data lines.

The device 1702 also includes computer-readable storage memory 1712,such as data storage devices that can be accessed by a computing device,and that provide persistent storage of data and executable instructions(e.g., software applications, modules, programs, functions, and thelike). The computer-readable storage memory described herein excludespropagating signals. Examples of computer-readable storage memoryinclude volatile memory and nonvolatile memory, fixed and removablemedia devices, and any suitable memory device or electronic data storagethat maintains data for computing device access. The computer-readablestorage memory can include various implementations of random accessmemory (RAM), read-only memory (ROM), flash memory, and other types ofstorage memory in various memory device configurations.

The computer-readable storage memory 1712 provides storage of the devicedata 1706 and various device applications 1714, such as an operatingsystem that is maintained as a software application with thecomputer-readable storage memory and executed by the processing system1710. The device applications may also include a device manager, such asany form of a control application, software application, signalprocessing and control module, code that is native to a particulardevice, a hardware abstraction layer for a particular device, and so on.In this example, the device applications also include a addressingapplication 1716 that implements embodiments of mesh network addressing,such as when the example device 1702 is implemented as any of the meshnetwork devices described herein.

The device 1702 also includes an audio and/or video system 1718 thatgenerates audio data for an audio device 1720 and/or generates displaydata for a display device 1722. The audio device and/or the displaydevice include any devices that process, display, and/or otherwiserender audio, video, display, and/or image data, such as the imagecontent of a digital photo. In implementations, the audio device and/orthe display device are integrated components of the example device 1702.Alternatively, the audio device and/or the display device are external,peripheral components to the example device. In embodiments, at leastpart of the techniques described for mesh network addressing may beimplemented in a distributed system, such as over a “cloud” 1724 in aplatform 1726. The cloud 1724 includes and/or is representative of theplatform 1726 for services 1728 and/or resources 1730.

The platform 1726 abstracts underlying functionality of hardware, suchas server devices (e.g., included in the services 1728) and/or softwareresources (e.g., included as the resources 1730), and connects theexample device 1702 with other devices, servers, etc. The resources 1730may also include applications and/or data that can be utilized whilecomputer processing is executed on servers that are remote from theexample device 1702. Additionally, the services 1728 and/or theresources 1730 may facilitate subscriber network services, such as overthe Internet, a cellular network, or Wi-Fi network. The platform 1726may also serve to abstract and scale resources to service a demand forthe resources 1730 that are implemented via the platform, such as in aninterconnected device embodiment with functionality distributedthroughout the system 1700. For example, the functionality may beimplemented in part at the example device 1702 as well as via theplatform 1726 that abstracts the functionality of the cloud 1724.

Although embodiments of mesh network addressing have been described inlanguage specific to features and/or methods, the subject of theappended claims is not necessarily limited to the specific features ormethods described. Rather, the specific features and methods aredisclosed as example implementations of mesh network addressing, andother equivalent features and methods are intended to be within thescope of the appended claims. Further, various different embodiments aredescribed and it is to be appreciated that each described embodiment canbe implemented independently or in connection with one or more otherdescribed embodiments.

The invention claimed is:
 1. A method of prioritizing routing in a meshnetwork, the method comprising: assigning a first preference value to afirst address prefix; assigning a second preference value to a secondaddress prefix; propagating network data in the mesh network, thenetwork data including: a first provisioning domain, associated with afirst border router, the first provisioning domain comprising the firstpreference value and the first address prefix; and a second provisioningdomain, associated with a second border router, the second provisioningdomain comprising the second preference value and the second addressprefix, said propagating the network data being effective to enabledetermining, at a router device, an address prefix to use for routing adata packet to a destination address.
 2. The method as recited in claim1, wherein if more than one border router offers a default route for agiven address prefix, the determined routing uses the address prefixwith the highest preference value for the default route.
 3. The methodas recited in claim 1, wherein the preference values are based on one ormore factors comprising: cost, reliability, latency, bandwidth, orQuality of Service (QoS).
 4. The method as recited in claim 1, whereinif the first preference value and the second preference value are equal,the determined routing uses the address prefix with a lowest routingcost.
 5. The method as recited in claim 1, wherein each of thepreference values is one of: high, medium, or low.
 6. The method asrecited in claim 1, wherein the first border router and the secondborder router are configured to forward data packets between one or moreexternal networks and the mesh network, and wherein if more than one ofthe border routers is associated with a given address prefix and offersa default route, the determined route is the default route with ahighest preference value.
 7. The method as recited in claim 1, whereinthe first border router and the second border router are configured toforward data packets between one or more external networks and the meshnetwork, and wherein if more than one of the border routers isassociated with a given address prefix and offers a default route andthe preference values associated with the border routers are equal, thedetermined route is the default route with a lowest routing cost.
 8. Amesh network device implemented as a router device of a mesh network,the mesh network device comprising: a mesh network interface configuredfor communication in the mesh network; a memory and processor system toimplement an addressing application that is configured to: receive, viathe mesh network interface, a first provisioning domain, associated witha first border router, the first provisioning domain comprising a firstaddress prefix and a first preference value, and a second provisioningdomain, associated with a second border router, the second provisioningdomain comprising a second address prefix and a second preference value;determine, based on the received provisioning domains, one of the firstaddress prefix or the second address prefix to use for routing a datapacket to a destination address; and forward the data packet using thedetermined address prefix.
 9. A mesh network device as recited in claim8, wherein if more than one border router, associated with a givenaddress prefix in the provisioning domains, offers a default route, thedetermined route is the default route with a higher preference value.10. A mesh network device as recited in claim 8, wherein the preferencevalues are based on one or more factors comprising: cost, reliability,latency, bandwidth, or Quality of Service (QoS).
 11. A mesh networkdevice as recited in claim 8, wherein if the preference value in thefirst provisioning domain and the preference value in the secondprovisioning domain are equal, the determined routing is the firstaddress prefix or the second address prefix, from the provisioningdomains, with a lower routing cost.
 12. A mesh network device as recitedin claim 8, wherein the preference value is one of: high, medium, orlow.
 13. A mesh network system, comprising: a leader device configuredto propagate a first provisioning domain, associated with a first borderrouter device, the first provisioning domain comprising a firstpreference value and a first address prefix; and a second provisioningdomain, associated with a second border router device, the secondprovisioning domain comprising a second preference value and a secondaddress prefix; and a router device of the mesh network, the routerdevice configured to: receive the provisioning domains, propagated bythe leader device; determine, based on the received provisioningdomains, one of the first address prefix or the second address prefix touse for routing a data packet to a destination address; and forward thedata packet using the determined address prefix.
 14. A mesh networksystem as recited in claim 13, further comprising the first borderrouter and the second border router configured to forward data packetsbetween one or more external networks and the mesh network.
 15. A meshnetwork system as recited in claim 14, wherein if more than one of theborder routers, associated with a given address prefix, offers a defaultroute, the determined route is the default route with a highestpreference value.
 16. A mesh network system as recited in claim 15,wherein if more than one of the border routers offers the default routeand the preference values associated with the border routers are equal,the determined route is the default route with a lowest routing cost.17. A mesh network system as recited in claim 13, wherein the preferencevalues are based on one or more factors comprising: cost, reliability,latency, bandwidth, or Quality of Service (QoS).
 18. A mesh networksystem as recited in claim 13, wherein if two provisioning domainsinclude the same address prefix, and wherein the preference values inthe two provisioning domains are equal, the determined routing uses thefirst address prefix or the second address prefix with a lower routingcost.
 19. A mesh network system as recited in claim 13, wherein thefirst preference value and the second preference value are each one of:high, medium, or low.
 20. A mesh network system as recited in claim 13,wherein if no value is set for one of the first preference value or thesecond preference value, a default value is used.